1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 // template <class Value, class Hash = hash<Value>, class Pred = equal_to<Value>,
13 // class Alloc = allocator<Value>>
14 // class unordered_set
16 // size_type erase(const key_type& k);
18 #include <unordered_set>
22 #include "min_allocator.h"
27 typedef std::unordered_set<int> C;
38 C c(a, a + sizeof(a)/sizeof(a[0]));
39 assert(c.erase(5) == 0);
40 assert(c.size() == 4);
41 assert(c.count(1) == 1);
42 assert(c.count(2) == 1);
43 assert(c.count(3) == 1);
44 assert(c.count(4) == 1);
46 assert(c.erase(2) == 1);
47 assert(c.size() == 3);
48 assert(c.count(1) == 1);
49 assert(c.count(3) == 1);
50 assert(c.count(4) == 1);
52 assert(c.erase(2) == 0);
53 assert(c.size() == 3);
54 assert(c.count(1) == 1);
55 assert(c.count(3) == 1);
56 assert(c.count(4) == 1);
58 assert(c.erase(4) == 1);
59 assert(c.size() == 2);
60 assert(c.count(1) == 1);
61 assert(c.count(3) == 1);
63 assert(c.erase(4) == 0);
64 assert(c.size() == 2);
65 assert(c.count(1) == 1);
66 assert(c.count(3) == 1);
68 assert(c.erase(1) == 1);
69 assert(c.size() == 1);
70 assert(c.count(3) == 1);
72 assert(c.erase(1) == 0);
73 assert(c.size() == 1);
74 assert(c.count(3) == 1);
76 assert(c.erase(3) == 1);
77 assert(c.size() == 0);
79 assert(c.erase(3) == 0);
80 assert(c.size() == 0);
82 #if __cplusplus >= 201103L
84 typedef std::unordered_set<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> C;
95 C c(a, a + sizeof(a)/sizeof(a[0]));
96 assert(c.erase(5) == 0);
97 assert(c.size() == 4);
98 assert(c.count(1) == 1);
99 assert(c.count(2) == 1);
100 assert(c.count(3) == 1);
101 assert(c.count(4) == 1);
103 assert(c.erase(2) == 1);
104 assert(c.size() == 3);
105 assert(c.count(1) == 1);
106 assert(c.count(3) == 1);
107 assert(c.count(4) == 1);
109 assert(c.erase(2) == 0);
110 assert(c.size() == 3);
111 assert(c.count(1) == 1);
112 assert(c.count(3) == 1);
113 assert(c.count(4) == 1);
115 assert(c.erase(4) == 1);
116 assert(c.size() == 2);
117 assert(c.count(1) == 1);
118 assert(c.count(3) == 1);
120 assert(c.erase(4) == 0);
121 assert(c.size() == 2);
122 assert(c.count(1) == 1);
123 assert(c.count(3) == 1);
125 assert(c.erase(1) == 1);
126 assert(c.size() == 1);
127 assert(c.count(3) == 1);
129 assert(c.erase(1) == 0);
130 assert(c.size() == 1);
131 assert(c.count(3) == 1);
133 assert(c.erase(3) == 1);
134 assert(c.size() == 0);
136 assert(c.erase(3) == 0);
137 assert(c.size() == 0);