#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> test_vec;
for (int i = 0; i<100;i++)
{
test_vec.push_back(i);
}
for(vector<int>::iterator it = test_vec.begin(); it != test_vec.end(); )
{
cout<<*(it)<<endl;
it = test_vec.erase(it);
}
return 0;
}
这段代码是在遍历的过程中删除元素的正确操作。
下面这段是错误的。通过输出可以看到确实漏了一半的元素。
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> test_vec;
for (int i = 0; i<100;i++)
{
test_vec.push_back(i);
}
for(vector<int>::iterator it = test_vec.begin(); it != test_vec.end(); ++it)
{
cout<<*(it)<<endl;
test_vec.erase(it);
}
return 0;
}