#include <iostream>
#include <list>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
int i;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(2);
vec.push_back(2);
vec.push_back(5);
cout<<"------"<<endl;
vector<int>::iterator it = vec.begin();
while(it!=vec.end())
{
cout<<*it<<" ";
it++;
}
cout<<endl;
it = vec.begin();
for(; it!=vec.end();)
{
if(*it == 2)
vec.erase(it++);
else
it++;
}
cout<<"------"<<endl;
it = vec.begin();
while(it!=vec.end())
{
cout<<*it<<" ";
it++;
}
cout<<endl;
return 0;
}
打印结果:
正确的写法是将vec.erase(it++);换成it=vec.erase(it);
而list两种写法都可以