zoukankan      html  css  js  c++  java
  • STL中list的erase()方法

    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
  • 相关阅读:
    JavaScript实现常见排序算法
    执行环境与作用域
    几种常见的三列布局,中间自适应,两边定宽
    常见的两列布局
    CodeAtlas For Sublime Text
    增加调用路径查找
    增加调用被调用个数隐喻
    sublime 插件
    分析大工程
    Jmeter 分布式测试
  • 原文地址:https://www.cnblogs.com/virusolf/p/4906774.html
Copyright © 2011-2022 走看看