c++ - 排序函数替换值时出现问题

标签 c++ sorting vector

我刚学c++,遇到了第一个问题。我正在使用 Visual Studio 和 C++11。这是代码:

cout << "Enter 5 numbers to add." << endl;
for (int i(0); i < 5; ++i) {
    int x;
    cin >> x;
    intList.push_back(x);
}
for (int item:intList) {
    sort(begin(intList), end(intList));
    cout << item << " ";
    total += item;
}
cout << endl;
cout << "Your total is " << total << endl;

如您所知,它要求您输入 5 个数字并将它们相加。当我使用 cout 时,它会正确输出 vector 的内容。一旦我添加了排序行,我就遇到了问题。它正确地对 vector 进行排序,除了它用第一个值替换最小值,即使它以正确的顺序放置它也是如此。示例:

输入 5 个数字相加。 87 95 61 43 2 87 43 61 87 95 你的总数是 373

还有一个问题,使用 item::intList 是迭代 vector 的最佳/有效方法。 我相信这是一个显而易见的解决方案。谢谢。

最佳答案

您需要重新定位对 sort 的调用,使其位于 for 循环之外。

目前您的排序使迭代器无效(在它的第一次调用中,因为此后它是一个空操作)导致您观察到的效果。

(我相信你知道你不需要为了计算总数而对 vector 进行排序。)

关于c++ - 排序函数替换值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154304/

相关文章:

c++ - DX11 Sprite 问题

java - 基于对象角色的算法消除

c++ - 填充一个二维 vector

c++ - vector 的 STL vector - 好主意吗?调整 "inner" vector 大小的机制?

c++ - 将 2D vector 转换为 C 类型的最佳方法(对于 SGX enclave)

c++ - 这段代码有什么问题?我无法从文件中读取 vector 。表达式 : vector subscript out of range

c++ - 实用地生成 Qt Q_OBJECT 类

c++ - 有没有更有效的方法从流中设置 std::vector ?

python - 使用键参数按多列对 Pandas 数据框进行排序

arrays - 按频率排序