问题描述如下:
在容器遍历过程中怎样动态地删除满足条件的元素,而不影响容器本次的遍历过程
代码:
#include "stdafx.h"
#include <list>
#include <vector>
#include <iostream>
using namespace std;
void main()
{
list<int> l;
for(int i=0;i<10;i++) //存储1~10的元素值
{
l.push_back(i+1);
}
list<int>::iterator it=l.begin();
while(it!=l.end())
{
list<int>::iterator lsave;
if(*it%2==0) //删除偶数元素
{
lsave=it;
it++;
l.erase(lsave);
}
else
{
it++;
}
}
it=l.begin();
while(it!=l.end()) //遍历该list
{
cout<<*it<<" ";
it++;
}
//**********************************
cout<<endl<<"*******************"<<endl;
vector<int> vec;
for(int i=0;i<10;i++)
{
vec.push_back(i+1);
}
vector<int>::iterator it1=vec.begin();
for(int i=0;i<vec.size();i++)
{
if(vec[i]%3==0)
{
vec.erase(i+it1);
}
}
it1=vec.begin();
while(it1!=vec.end())
{
cout<<*it1<<" ";
it1++;
}
cout<<endl;
system("pause");
}