zoukankan      html  css  js  c++  java
  • STL删除元素注意事项

    一、vector、list

      正确版本:  

      for(auto iter = a.begin(); iter != a.end(); )

      {

        if(*iter > 30)

        {

          iter = a.erase(iter);

        }

        else

        {

          iter++;

        }

      }

      错误版本:

      for(auto iter = a.begin(); iter != a.end(); ++iter)

      {

        if(*iter > 30)

        {

          a.erase(iter);

        }

      }

    二、map

      删除map的元素,不能是 map[key]=NULL

      这种做法没有删除<key,value>对,而改成了<key,NULL>

      只能是

            iterator it=map.find(key);

            if(it!=map.end())

                 map.erase(it);

      遍历删除问题:

        正确版本:   

        for(;iter!=mapStudent.end();)
        {
             if((iter->second)>=aa)
             {
                 //满足删除条件,删除当前结点,并指向下面一个结点
                      mapStudent.erase(iter++);
             }
             else
             {
             //条件不满足,指向下面一个结点
             iter++;
             }
        }
        错误版本:
        for(map<string, string>::iterator i = mapData.begin(); i != mapData.end(); ++i)
        {
          if(i->first == "b")
          {
            mapData.erase(i);  
          }
        }  
     
  • 相关阅读:
    nio非阻塞缓存流
    java高级---->Thread之ScheduledExecutorService的使用
    ScheduledExecutorService-spring-定时周期执行指定的任务
    常用数据库连接池 (DBCP、c3p0、Druid) 配置说明
    Linux定时任务Crontab命令详解
    mybatis xml查询语句大全
    mysql索引研究
    关于HttpClient重试策略的研究
    对于org.apache.commons.dbcp.BasicDataSource的配置认知
    Linux dos2unix命令
  • 原文地址:https://www.cnblogs.com/vinke2013/p/7209242.html
Copyright © 2011-2022 走看看