gpt4 book ai didi

c++ - 从 C++ 输出中删除逗号

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:30 34 4
gpt4 key购买 nike

我编写了这个程序,将 vector 中的数字从大到小排序,效果很好,但唯一困扰我的是试图从最后一个数字中删除逗号。这是我的代码

#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;

int main() {

vector<int> vi1, vi2, vi3;
srand(987);

for (int i = 0; i < 10; ++i) vi1.push_back(rand() % 10);
sort(vi1.begin(), vi1.end());

for (int i = 0; i < 10; ++i) vi2.push_back(rand() % 10);
sort(vi2.begin(), vi2.end())

while(!vi1.empty() && !vi2.empty()) {
if(vi1.back()>=vi2.back()) {
vi3.push_back(vi1.back());
vi1.pop_back();
}
else {
vi3.push_back(vi2.back());
vi2.pop_back();
}
}

while(!vi1.empty()) {
vi3.push_back(vi1.back());
vi1.pop_back();
}
while(!vi2.empty()) {
vi3.push_back(vi2.back());
vi2.pop_back();
}

for (auto i = vi3.begin(); i != vi3.end(); ++i)
cout << *i << ", ";
cout << "\nBye..." << endl;
return 0;
}

这是输出

9, 9, 9, 8, 8, 8, 6, 6, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 
Bye...

如您所见,在最后一个 0 之后有一个逗号,从语法上讲它没有意义。我怎样才能删除那个逗号?

最佳答案

最简单的方法不是删除,而是只为第一个值以外的其他值打印逗号:

for (auto i = vi3.begin(); i != vi3.end(); ++i) {
if(i != vi3.begin()) {
cout << ", ";
}
cout << *i;
}

我经常使用这个习语来格式化,例如SQL 参数列表,或类似的,其中在最后一个元素之后不需要分隔符但对于任何其他元素。
还有其他方法可以检测第一个元素(例如,使用在循环开始前初始化为truebool 变量,并设置为 false 在第一次迭代时)。
对于您的示例,似乎只检查 vi3.begin() 是最简单和最自然的方法。

这是伪代码中的通用变体:

bool isFirstOutput = true;
for_each(element in list) {
if(not isFirstOutput) {
print delimiter;
}
print element;
isFirstOutput = false;
}

关于c++ - 从 C++ 输出中删除逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735410/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com