#include<iostream>
#include<list>
using namespace std;
/*测试迭代器删除当前位置的变动之后是否有效
*结果无效,得重新设置,在这里我设置了一个局部变量tmp用于暂时存储下一个位置
*/
void test()
{
list<int> l1;
for(int i=0;i<100;i++)
{
l1.push_back(i);
}
list<int>::iterator it=l1.begin(),itEnd=l1.end();
it=l1.begin();
for(int i=0;i<l1.size();i++)
{
cout<<*it<<" ";
it++;
}
cout<<endl;
it=l1.begin();
for(;it!=itEnd;++it)
{
list<int>::iterator tmp=it;
tmp++;
if((*it)%10==0)
{
l1.erase(it);
cout<<__FILE__<<endl;
it=tmp;
}
}
cout<<"after erase "<<endl;
it=l1.begin();
for(int i=0;i<l1.size();i++)
{
cout<<*it<<" ";
it++;
}
cout<<endl;
}
int main()
{
test();
return 0;
}
迭代器删除之后的处理
最新推荐文章于 2023-08-24 15:10:40 发布