我刚刚尝试了一些 STL,但遇到了一个问题,我无法解释它是如何工作的。我在下面有一些代码:
int main(int argc, char **argv) {
vector<int> myvector(3,20);
vector<int>::iterator it;
myvector.push_back(12);
myvector.push_back(15);
int i = 0;
for(it = myvector.begin(); it!=myvector.end(); it++)
{
if(*it==20)
{
cout<<"delete "<<i<<endl;
myvector.erase(it);
}
i++;
}
for(it = myvector.begin(); it!=myvector.end(); it++)
cout<<*it<<" ";
vector.erase() 没有擦除第三项(我的向量中的“20”),它打印出:20 12 15,但我认为我应该是:12 15。
所以,任何人都可以解释它是如何为我工作的,或者我在哪里犯了一些错误?非常感谢。