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
  • 相关阅读:
    通过scp拷贝文件时无需交互输入密码
    suse linux安装lrzsz
    shc加密shell脚本
    linux小程序--cmatrix
    linux系统PXE+Kickstart自动安装系统
    升级SSH
    shell生成随机数的几种方法
    django —— MVT模型
    Django学习---笔记一
    python学习--Django虚拟环境搭建
  • 原文地址:https://www.cnblogs.com/virusolf/p/4906774.html
Copyright © 2011-2022 走看看