http://www.cnblogs.com/gshlsh17/

rase()方法是删除iterator指定的节点  但是要注意的是在执行完此函数的时候iterator也被销毁了   这样的话关于iterator的操作就会报错     以下是关于erase()方法的正确使用

正确使用方法1 :

std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
itList = List.erase( itList);
}
else
{
itList++;
}
}

正确使用方法2:

std::list<int> List;
std::list<int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
List.erase( itList++);
}
else
{
itList++;
}
}

错误使用方法1:

std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); itList++)
{
if( WillDelete( *itList) )
{
List.erase( itList);
}
}

错误使用方法2:

std::list< int> List;
std::list< int>::iterator itList;
for( itList = List.begin(); itList != List.end(); )
{
if( WillDelete( *itList) )
{
itList = List.erase( ++itList);
}
else
itList++;
}

同时要注意的是    std::list  多线程不安全的,所以多线程对list操作一般都要加锁,保证安全性

 
转自:http://blog.csdn.net/iam_charlie/article/details/6062472

最新文章

  1. PHP发短信 PEAR 包:Services_Sms
  2. 关于 xib 的使用
  3. Innodb 存储引擎(转)
  4. mysql数据库常用语句2
  5. Storm与Hadoop的角色和组件比较
  6. HW4.17
  7. Android Camera开发:使用TextureView和SurfaceTexture预览Camera 基础拍照demo
  8. NuGet Package 管理工具
  9. Spring自定义标签
  10. Thinkphp导入外部类的方法
  11. (转)spring异常抛出触发事务回滚策略
  12. ZOJ1008
  13. Celery 1
  14. Codeforces Round #545 (Div. 2) D 贪心 + kmp
  15. bitnami_redmine3.3.0-1 问题及备份恢复
  16. HAPRoxy(一):HAProxy基本配置、调度算法与tcp、http、heath模式配置示例
  17. Java逐行写入字符串到文件
  18. UML和模式应用4:初始阶段(7)--其它需求
  19. 汇编 MOV -2
  20. CefSharp.OffScreen.Example

热门文章

  1. stl之std::remove_copy
  2. 触发器 :new和 :old的使用
  3. etcd客户端c#
  4. mysql-新增表前判断同名表是否存在
  5. pip安装拓展包--网络超时/Read timed out问题
  6. 【php学习-4】
  7. tp3.2报错;syntax error, unexpected &#39;function&#39; (T_FUNCTION), expecting identifier (T_STRING) or \\ (T_NS_SEPARATOR)
  8. go web处理上传
  9. 析构函数的调用与return语句
  10. 【UE4】二十六、Look at camera 蓝图