迭代器删除之后的处理

#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;
}

posted @ 2015-11-21 16:56  cloudren2020  阅读(170)  评论(0编辑  收藏  举报