STL中list的erase()方法

it2022-05-05  133

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

转载于:https://www.cnblogs.com/virusolf/p/4906774.html

相关资源:各显卡算力对照表!

最新回复(0)