vector是一个动态数组,元素是连续存放的。
当删除vector中间的某个元素后,会导致后面的迭代器实效。
#include <vector>
#include <iostream>
#include <list>
using namespace std;
void main()
{
vector<int> array;
array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(3);
array.push_back(4);
array.push_back(5);
vector<int>::iterator itr = array.begin();
while (itr != array.end())
{
if (*itr == 3)
{
itr=array.erase(itr);//删除值为3的元素
}
++itr;
}
for(vector<int>::iterator i=array.begin(); i != array.end(); ++i)
{
cout << *i <<' ';
}
//=============================================
cout <<endl<<endl;
list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(2);
l.push_back(2);
l.push_back(1);
l.push_back(2);
list<int>::iterator j=l.begin();
while(j != l.end())
{
if(*j == 2)
{
l.erase(j++);
}
else
{
++j;
}
}
for(list<int>::iterator i=l.begin(); i != l.end(); ++i)
{
cout << *i << ' ';
}
}