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下二种方法都可以。
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下二种方法都可以。