排序功能替换值的麻烦

时间:2016-12-15 00:01:45

标签: c++ sorting vector

我只是学习c ++,而且我遇到了第一个问题。我正在使用visual studio和c ++ 11。这是代码:

render(){
    return({yourCondition ? <yourComponent /> : null});
}

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

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;

另外一个问题是使用 Enter 5 numbers to add. 87 95 61 43 2 87 43 61 87 95 Your total is 373迭代向量的最佳/有效方法。 我确信这是一个明显的解决方案。感谢。

1 个答案:

答案 0 :(得分:3)

您需要重新定位调用以进行排序,使其超出for循环。

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

(我相信你知道你不需要对矢量进行排序以计算总数。)