容器类iterator 循环删除结点的问题

来源:互联网 发布:java代码解析json数据 编辑:程序博客网 时间:2024/05/29 14:30

对于容器,iterator 循环删除(erase)的结点,返回的是下一个结点,如果直接it++,会出错:

  //如下写法是错误:
  //如果erase了,就不能it++了
   for (it = data_list.begin(); it != data_list.end();it++)
       data_list.erase(it);//删除it后,再it++,会出错


//正确的使用如下:

                //it erase完后,返回it++

 list<int>::iterator it; 
 for (it =data_list.begin(); it != data_list..end(); ) {
if (*it % 100 == 0)
data_list.erase(it++); //这里是关键 ,利用临时变量 ,也可以这样it=lt.erase(it)
else
 ++it;
 }