我有一个像下面这样的 vector
vector<unsigned int> myvector;
vector<unsigned int>::iterator it;
//fill it
for (i=1; i<=10; i++) myvector.push_back(i);
//I want delete first one
it = myvector.begin();
myvector.erase(it++);
//I want to know if I am in last element
if(it != myvector.end())
cout << "a test";
但是在比较表达式中我的程序崩溃了。为什么?
最佳答案
简单的说,因为在调用erase()
之后,vector中所有指向被删除位置或者后面位置的迭代器都是无效的。参见,例如,here有关此的官方文档。
关于c++ - 为什么当我删除 std::vector 的成员时我的程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845984/