zoukankan      html  css  js  c++  java
  • linux erase

    map的erase windows和linux不同,而迭代器弄不好就失效

    1 #include <iostream>
     2 #include <map>
     3 #include <string>
     4 
     5 using namespace  std;
     6 
     7 int main(int argc, char* argv[])
     8 {
     9     map<string, int> MyMap;
    10 
    11     MyMap["bujiwu"] = 26;
    12     MyMap["swallow"] = 25;
    13 
    14     std::cout <<"Before delete element:" << std::endl;
    15     for( map<string, int>::iterator Itor = MyMap.begin(); Itor != MyMap.end(); Itor++ )
    17     {
    18         std::cout << Itor->first << "   " << Itor->second << std::endl;
    19     }
    20 
    21     for( map<string, int>::iterator Itor = MyMap.begin(); Itor != MyMap.end(); )
    23     {
    24         if ( Itor->first == "bujiwu" )
    25         {
    26             MyMap.erase(Itor++); //在windows下也可以Itor = MyMap.erase(Itor),但是在linux下不行。
    27         }
    28         else
    29         {
    30             Itor++;
    31         }
    32     }
    33 
    34     std::cout <<"After delete element:" << std::endl;
    35     for( map<string, int>::iterator Itor = MyMap.begin(); Itor != MyMap.end(); Itor++ )
    37     {
    38         std::cout << Itor->first << "   " << Itor->second << std::endl;
    39     }
    40 
    41     return 0;
    42 }

    通过测试在不管在linux还是Windows平台下,vector,list都有方法iterator erase( iterator _Where ); 
    但是在Linux下map中没有方法iterator erase( iterator _Where ); 所以上述代码在Linux平台下第26行必须写成MyMap.erase(Itor++),而不能写能Itor = MyMap.erase(Itor). 在Windows下二种方法都可以。

  • 相关阅读:
    hadoop集群单点配置
    CentOS6.x环境通过yum命令在线安装或重装zookeeper-server
    层层递进——宽度优先搜索(BFS)
    解救小哈——DFS算法举例
    浅谈深度优先搜索
    CodeCombat森林关卡Python代码
    用OpenGL进行曲线、曲面的绘制
    CodeCombat地牢关卡Python代码
    转载:程序员都应该访问的最佳网站
    用OpenGL实现动态的立体时钟
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/7898697.html
Copyright © 2011-2022 走看看