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
  • 相关阅读:
    安全攻防技能——安全基础概念
    解决linux下中文文件名显示乱码问题
    yaml封装
    IIS挂载网站一键更新备份
    MySQL 聚集索引和二级索引
    redolog落盘机制
    MySQL中Redo Log相关的重要参数总结
    mysql之innodb_buffer_pool
    xshell ssh 登录慢
    记录pg
  • 原文地址:https://www.cnblogs.com/virusolf/p/4906774.html
Copyright © 2011-2022 走看看