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);  
          }
        }  
     
  • 相关阅读:
    使用C#调用C++类库
    C# IntPtr类型
    C# 调用C++ dll string类型返回
    C# try、catch、finally语句
    C语言 char *、char []、const char *、string的区别与相互转换
    C# 字符串string与char数组互转!
    C#如何调用C++(进阶篇)
    Springboot通过过滤器实现对请求头的修改
    【spring事务】
    命令行参数库:McMaster.Extensions.CommandLineUtils【转】
  • 原文地址:https://www.cnblogs.com/vinke2013/p/7209242.html
Copyright © 2011-2022 走看看