私は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を使うと、ベクトルの内容を正しく出力します。並べ替え線を追加するとすぐに問題が発生しました。これは、正しい順序で配置しても、最小値を最初の値に置き換える点を除いて、ベクトルを正しくソートします。例:また
Enter 5 numbers to add. 87 95 61 43 2 87 43 61 87 95 Your total is 373
追加の質問、ベクトルを反復するitem::intList
最高/効率的な方法を使用しています。 これは明白な解決策であると確信しています。ありがとう。
その作業!私は反復子を無効にすることについて少し不明で、なぜそれがソートの最初の値にのみ影響するのですか。 – John
私はベクトルを学びたいので、私はソートしています。このようなエラーがあると、私は学ぶのに役立ちます。 – John
本質的に後続のソートは効果を持ちません。そして、Googleのiterator invalidationを実行します。 – Bathsheba