Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / STL中list的erase()方法

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<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://www.linuxidc.com/Linux/2016-01/127454.htm