我刚学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/