Linux与Windows中map类erase方法的差异
2014-02-09 18:53
501 查看
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 }
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下二种方法都可以。
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 }
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下二种方法都可以。
相关文章推荐
- Linux与Windows中map类erase方法的差异
- map类的erase方法的在Linux与Windows中的差异
- Linux与Windows中map类erase方法实现的不同决定使用的不同
- Windows和Linux中Sleep()的差异
- Linux开机自动挂载Windows分区的两种方法
- Tomcat日志输出在linux和windows差异
- 双系统(Linux + Windows)下时间不一致问题解决方法
- cacti监控下添加对磁盘io的监控方法(Linux主机和Windows主机)
- Windows下查看LINUX ext2/ext3格式的三种常用方法(图解)
- Windows下Debug Linux C/C++程序的一种方法
- windows及linux环境下永久修改pip镜像源的方法
- 让Windows访问Linux文件的最简单的方法
- 双系统下卸载Linux或Windows的方法
- Xshell实现Windows上传文件到Linux主机的方法
- mysql 忘记密码的解决方法(linux和windows小结)
- 自动开机和自动关机设定方法(包括linux和windows)
- Windows和Linux下如何查看端口被哪个进程占用的方法
- Linux文件与Windows文件的文件/文件名编码转换方法
- 更换默认启动系统的方法,适合于安装了windows 和 linux双系统的用户(转载)