我有一个像下面这样的矢量
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";
Run Code Online (Sandbox Code Playgroud)
但在比较表达式中,我的程序崩溃了.为什么?
因为erase()在擦除点和擦除点之后使迭代器无效。
OTOH,返回值是一个迭代器,它指向擦除后的元素,所以你可以这样做:
it = myvector.erase(it);
if (it == myvector.end()) { ... }
Run Code Online (Sandbox Code Playgroud)