关闭

迭代器删除之后的处理

141人阅读 评论(0) 收藏 举报
分类:
#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;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:82560次
    • 积分:2108
    • 等级:
    • 排名:第18756名
    • 原创:110篇
    • 转载:142篇
    • 译文:2篇
    • 评论:0条