直接看源码,内有详细解释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*
测试vector, list, map遍历时删除符合条件的元素
本代码测试环境: ubuntu12 + win7_x64
*/
#include <iostream>
#include <vector>
#include <list>
#include <map>
#include <iterator>
using namespace std;
void Remove1(vector< int > &vec, int num)
{
for (vector< int >::iterator it = vec.begin(); it != vec.end();)
{
if (*it == num)
it = vec.erase(it);
else
it++;
}
}
void Remove2(list< int > &lst, int num)
{
list< int >::iterator it;
for (it=lst.begin(); it!=lst.end();)
{
if (*it == num)
{
lst.erase(it++);
}
else
it++;
}
}
void initMap(map< int , int >& m, int arr[], int arrLen)
{
for ( int i = 0; i < arrLen; i++)
m[i] = arr[i];
}
void Remove_map(map< int , int >& m, int num)
{
map< int , int >::iterator it;
for (it = m.begin(); it != m.end();)
{
if (it->second == num)
m.erase(it++);
else
it++;
}
}
void displayMap(map< int , int >& m)
{
map< int , int >::iterator it = m.begin();
while (it != m.end())
{
cout << "key = " << it->first << ", value = " << it->second << endl;
it++;
}
cout << endl;
}
int main( void )
{
int arr[] = {1, 3, 5, 5, 5, 13, 7, 5, 7, 9};
int arrLen = sizeof (arr) / sizeof (arr[0]);
#if 1
// test vector
vector< int > vec(arr, arr+arrLen);
Remove1(vec, 5);
copy(vec.begin(), vec.end(), ostream_iterator< int >(cout, " " ));
cout << endl << endl;
#endif
// test list
list< int > lst(arr, arr+arrLen);
Remove2(lst, 5);
copy(lst.begin(), lst.end(), ostream_iterator< int >(cout, " " ));
cout << endl << endl;
// test map
map< int , int > m;
initMap(m, arr, arrLen);
Remove_map(m, 5);
displayMap(m);
return 0;
}
/*
Win7_x64运行结果:
1 3 13 7 7 9
1 3 13 7 7 9
key = 0, value = 1
key = 1, value = 3
key = 5, value = 13
key = 6, value = 7
key = 8, value = 7
key = 9, value = 9
Ubuntu12运行结果:
[zcm@cpp #54]$make
g++ -Wall -Os -DLINUX -o a a.cpp
[zcm@cpp #55]$./a
1 3 13 7 7 9
1 3 13 7 7 9
key = 0, value = 1
key = 1, value = 3
key = 5, value = 13
key = 6, value = 7
key = 8, value = 7
key = 9, value = 9
*/
|
以上就是小编为大家带来的小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧全部内容了,希望大家多多支持服务器之家~