Linux與Windows中map類erase方法的差異
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
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下二種方法都可以。
相關文章
- Scala與Java差異(五)之Map與TupleJava
- Linux和Windows的差異?0基礎需知!LinuxWindows
- 【譯】 React官方:函式元件與類元件的差異 ?React函式元件
- js中split,splice,slice方法之間的差異。JS
- [Oracle] UNIX與Windows 2000上Oracle的差異(III)OracleWindows
- jquery版本中的差異jQuery
- php程式碼審計之命令執行中windows/linux的差異化問題PHPWindowsLinux
- PostgreSQL與Oracle的sql差異SQLOracle
- 【譯】框架與庫的差異框架
- 關於字型路徑Windows和Linux差異(putenv('GDFONTPATH=c:\windows\fonts'))WindowsLinux
- Linux系統中Ubuntu和Redhat的差異有哪些?LinuxUbuntuRedhat
- mac和windows執行maven命令的差異MacWindowsMaven
- Linux和Windows有什麼差異?學哪個有前景?LinuxWindows
- Firefox與IE在CSS樣式表中的差異FirefoxCSS
- Oracle中exists和in的效能差異Oracle
- 用前端姿勢玩docker【五】快速構建中類Unix系統與Windows系統的差異化處理前端DockerWindows
- [譯]React函式元件和類元件的差異React函式元件
- String類中的equals方法與Object類中的equals方法的不同點Object
- typeof、instanceof與isPrototypeOf()的差異與聯絡
- 在Linux中,如何比較兩個檔案差異?Linux
- Gradle中的差異化構建Gradle
- Linux MySQL差異備份技巧LinuxMySql
- Oracle 8i 與 oracle 9 下 RMAN 中 CROSSCHECK 使用的差異OracleROS
- jquery 中 $.map 的使用方法jQuery
- Java中Map的遍歷方法Java
- C++中map的常用方法C++
- 軟體測試:SVN與Git的差異Git
- 【差異】LENGTH與VSIZE的區別演示
- linux 下的差異和增量備份(轉)Linux
- 反向代理與正向代理差異分析
- 子查詢與join效能差異
- 兩表中某列的資料差異
- Map集合中的具體子類TreeMap
- DCCI:Android平臺遊戲類App佔27.1% 與iOS差異顯著Android遊戲APPiOS
- 【譯】Object與Map的異同及使用場景Object
- delphi中回撥函式差異函式
- Windows各個系列啟動速度差異的奧秘(轉)Windows
- UNIX 和 WINDOWS2000 上的 ORACLE 的差異 (轉)WindowsOracle