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);  
          }
        }  
     
  • 相关阅读:
    734. Sentence Similarity
    Rainbow Sort
    692. Top K Frequent Words
    347. Top K Frequent Elements
    12. Integer to Roman
    13. Roman to Integer
    109. Convert Sorted List to Binary Search Tree
    用表单写兴趣爱好的程序
    方法重载与方法重写的区别
    super和this的区别
  • 原文地址:https://www.cnblogs.com/vinke2013/p/7209242.html
Copyright © 2011-2022 走看看