STL中list的erase()方法
2024-09-27 21:48:06
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
最新文章
- PHP发短信 PEAR 包:Services_Sms
- 关于 xib 的使用
- Innodb 存储引擎(转)
- mysql数据库常用语句2
- Storm与Hadoop的角色和组件比较
- HW4.17
- Android Camera开发:使用TextureView和SurfaceTexture预览Camera 基础拍照demo
- NuGet Package 管理工具
- Spring自定义标签
- Thinkphp导入外部类的方法
- (转)spring异常抛出触发事务回滚策略
- ZOJ1008
- Celery 1
- Codeforces Round #545 (Div. 2) D 贪心 + kmp
- bitnami_redmine3.3.0-1 问题及备份恢复
- HAPRoxy(一):HAProxy基本配置、调度算法与tcp、http、heath模式配置示例
- Java逐行写入字符串到文件
- UML和模式应用4:初始阶段(7)--其它需求
- 汇编 MOV -2
- CefSharp.OffScreen.Example
热门文章
- stl之std::remove_copy
- 触发器 :new和 :old的使用
- etcd客户端c#
- mysql-新增表前判断同名表是否存在
- pip安装拓展包--网络超时/Read timed out问题
- 【php学习-4】
- tp3.2报错;syntax error, unexpected &#39;function&#39; (T_FUNCTION), expecting identifier (T_STRING) or \\ (T_NS_SEPARATOR)
- go web处理上传
- 析构函数的调用与return语句
- 【UE4】二十六、Look at camera 蓝图