1
/**/
/*
2
(C) OOMusou 2006 http://oomusou.cnblogs.com
3
4
Filename : VectorFindAndErase.cpp
5
Compiler : Visual C++ 8.0
6
Description : Demo how to erase iterator in a RIGHT way.
7
Release : 11/14/2006
8
*/
9
#include
<
iostream
>
10
#include
<
vector
>
11
#include
<
algorithm
>
12
13
int
main()
{
14
const int iaSize = 11;
15
int ia[] =
{0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89};
16
17
std::vector<int> ivec;
18
ivec.insert(ivec.end(), ia, ia + iaSize);
19
20
// Compile OK, but run-time error!!
21
// for(std::vector<int>::iterator iter = ivec.begin();
22
// iter != ivec.end(); ++iter) {
23
// if (*iter == 8) {
24
// ivec.erase(iter);
25
// }
26
// }
27
28
// This is a RIGHT way to do it.
29
std::vector<int>::iterator iter = find(ivec.begin(), ivec.end(), 8);
30
if (iter != ivec.end())
{
31
ivec.erase(iter);
32
}
33
34
// cout the result
35
for(std::vector<int>::const_iterator iter = ivec.begin();
36
iter != ivec.end(); ++iter)
{
37
38
std::cout << *iter << std::endl;
39
}
40
41
return 0;
42
}


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

See Also
(原創) 何删除std::vector内的element?(使用for loop) (C/C++) (STL)
Reference
C++ Primer 4th P.327