为什么我不能像这样擦除矢量的所有元素?

Why can't I erase all element of vector like this?

本文关键字:元素 不能 像这样 擦除 为什么      更新时间:2023-10-16

我崩溃的源代码在这里:

#include <vector>
using namespace std;
vector<int>::iterator iter , tempIt;
int main() {
    vector<int> cont(3, 5);
    for (iter = cont.begin() ; iter != cont.end() ; ) {
        tempIt = iter;
        ++iter;
        cont.erase(tempIt);
    }
    return 0;
}

擦除最后一个元素时总是失败。

来源http://en.cppreference.com/w/cpp/container/vector/erase:

使擦除点处或之后的迭代器和引用无效,包括end()迭代器。

因此,擦除会使iter迭代器失效,之后您将有未定义的行为。