博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL中list的erase()方法
阅读量:4685 次
发布时间:2019-06-09

本文共 1158 字,大约阅读时间需要 3 分钟。

erase()方法是删除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
List;std::list
::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
 

转载于:https://www.cnblogs.com/gshlsh17/p/3534950.html

你可能感兴趣的文章
测试工具
查看>>
php实现在线下载程序安装包功能
查看>>
Swift_闭包
查看>>
骗人骗自己究竟有这么好骗么
查看>>
form 程序开发之附加程序
查看>>
CSS层叠样式表(Cascading Style sheets)
查看>>
TortoiseSVN中Branching和Merging实践
查看>>
[android警告]AndroidManifest.xml警告 Not targeting the latest versions of Android
查看>>
LOD技术的理解
查看>>
Java ThreadLocal
查看>>
5m21d缓冲区溢出学习笔记
查看>>
调试WebParts
查看>>
codevs:1313 质因数分解:已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 。...
查看>>
如何设计一个百万级用户的抽奖系统?
查看>>
用linux装逼->mpg321
查看>>
[ An Ac a Day ^_^ ] HDU 1257 基础dp 最长上升子序列
查看>>
pageResponse - 让H5适配移动设备全家
查看>>
dede搜索页-分页
查看>>
页面返回无刷新
查看>>
php中error_reporting
查看>>