读书人

请问一个STL的有关问题

发布时间: 2012-02-17 17:50:42 作者: rapoo

请教一个STL的问题
我创建一个list 并用iterator 删除里面的元素

list <int> ilist;
for( int i=0;i <11;i++)
{
ilist.push_back( i ) ;
}
list < int > ::iterator iter;
iter = ilist.begin();
for( iter=ilist.begin(); iter != ilist.end() ; ++iter )
{
ilist.erase(iter);
}

上面的代码,为什么我erase一次后就包错了,请教是哪写错了

[解决办法]
list 删除之后,元素会移动
所以要从后面开始删除
或者直接 clear
[解决办法]
删除以后iter失效
for( iter=ilist.begin(); iter != ilist.end() ; /*++iter*/ )
{
iter = ilist.erase(iter);
}

读书人网 >VC/MFC

热点推荐