Linux与Windows中map类erase方法的差异

本文介绍了一段C++代码,演示了如何在map容器中删除指定键的元素,并展示了在不同操作系统(如Linux和Windows)下的迭代器使用差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
16              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();
22              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();
36              Itor != MyMap.end(); Itor++ )
37      {
38          std::cout << Itor->first << "   " << Itor->second << std::endl;
39      }
40
41     return 0;
42 }
43
44


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值