1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <set>
11
12 // class set
13
14 // size_type erase(const key_type& k);
15
16 #include <set>
17 #include <cassert>
18
main()19 int main()
20 {
21 {
22 typedef std::set<int> M;
23 typedef int V;
24 typedef M::size_type I;
25 V ar[] =
26 {
27 1,
28 2,
29 3,
30 4,
31 5,
32 6,
33 7,
34 8
35 };
36 M m(ar, ar + sizeof(ar)/sizeof(ar[0]));
37 assert(m.size() == 8);
38 I i = m.erase(9);
39 assert(m.size() == 8);
40 assert(i == 0);
41 assert(*next(m.begin(), 0) == 1);
42 assert(*next(m.begin(), 1) == 2);
43 assert(*next(m.begin(), 2) == 3);
44 assert(*next(m.begin(), 3) == 4);
45 assert(*next(m.begin(), 4) == 5);
46 assert(*next(m.begin(), 5) == 6);
47 assert(*next(m.begin(), 6) == 7);
48 assert(*next(m.begin(), 7) == 8);
49
50 i = m.erase(4);
51 assert(m.size() == 7);
52 assert(i == 1);
53 assert(*next(m.begin(), 0) == 1);
54 assert(*next(m.begin(), 1) == 2);
55 assert(*next(m.begin(), 2) == 3);
56 assert(*next(m.begin(), 3) == 5);
57 assert(*next(m.begin(), 4) == 6);
58 assert(*next(m.begin(), 5) == 7);
59 assert(*next(m.begin(), 6) == 8);
60
61 i = m.erase(1);
62 assert(m.size() == 6);
63 assert(i == 1);
64 assert(*next(m.begin(), 0) == 2);
65 assert(*next(m.begin(), 1) == 3);
66 assert(*next(m.begin(), 2) == 5);
67 assert(*next(m.begin(), 3) == 6);
68 assert(*next(m.begin(), 4) == 7);
69 assert(*next(m.begin(), 5) == 8);
70
71 i = m.erase(8);
72 assert(m.size() == 5);
73 assert(i == 1);
74 assert(*next(m.begin(), 0) == 2);
75 assert(*next(m.begin(), 1) == 3);
76 assert(*next(m.begin(), 2) == 5);
77 assert(*next(m.begin(), 3) == 6);
78 assert(*next(m.begin(), 4) == 7);
79
80 i = m.erase(3);
81 assert(m.size() == 4);
82 assert(i == 1);
83 assert(*next(m.begin(), 0) == 2);
84 assert(*next(m.begin(), 1) == 5);
85 assert(*next(m.begin(), 2) == 6);
86 assert(*next(m.begin(), 3) == 7);
87
88 i = m.erase(6);
89 assert(m.size() == 3);
90 assert(i == 1);
91 assert(*next(m.begin(), 0) == 2);
92 assert(*next(m.begin(), 1) == 5);
93 assert(*next(m.begin(), 2) == 7);
94
95 i = m.erase(7);
96 assert(m.size() == 2);
97 assert(i == 1);
98 assert(*next(m.begin(), 0) == 2);
99 assert(*next(m.begin(), 1) == 5);
100
101 i = m.erase(2);
102 assert(m.size() == 1);
103 assert(i == 1);
104 assert(*next(m.begin(), 0) == 5);
105
106 i = m.erase(5);
107 assert(m.size() == 0);
108 assert(i == 1);
109 }
110 }
111