cppは初めてです。イテレータをインクリメントせずに消去するように呼び出すと、プログラムは兆候やクラッシュなしにすぐに終了します。次の例では、「Afterif条件」のみが出力されます。エラーは表示されません。ただし、list.erase(it ++);を正しく呼び出した場合。すべてを印刷するよりも。 私の質問は、私がそれを正しく呼んでいないときに何が起こったのかについてです。クラッシュや終了が表示されないのはなぜですか?私が心配して質問した理由は、この種のクラッシュをキャッチすることについてですが、なぜキャッチブロックでキャッチしなかったのですか?それを捕まえる方法はありますか?
int main(int argc, char *argv[]) {
try {
list<int>::iterator it;
list<int> list;
list.push_back(1);
for (it = list.begin(); it != list.end(); ++it) {
if ((*it) == 1) {
list.erase(it);
}
cerr << "After if condition " << endl;
}
cerr << "After for condition" << endl;
} catch (...) {
cerr << "catch exception" << endl;
}
cerr << "Finish" << endl;
}