我崩溃的源代码在这里:
#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;
}
擦除最后一个元素时总是失败。
答案 0 :(得分:4)
来自http://en.cppreference.com/w/cpp/container/vector/erase:
在擦除点或之后使迭代器和引用无效,包括end()迭代器。
因此,擦除会使您的iter
迭代器失效,之后您会有未定义的行为。