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 Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
13 // class Alloc = allocator<pair<const Key, T>>>
14 // class unordered_map
16 // size_type erase(const key_type& k);
18 #include <unordered_map>
22 #include "min_allocator.h"
27 typedef std::unordered_map<int, std::string> C;
28 typedef std::pair<int, std::string> P;
38 C c(a, a + sizeof(a)/sizeof(a[0]));
39 assert(c.erase(5) == 0);
40 assert(c.size() == 4);
41 assert(c.at(1) == "one");
42 assert(c.at(2) == "two");
43 assert(c.at(3) == "three");
44 assert(c.at(4) == "four");
46 assert(c.erase(2) == 1);
47 assert(c.size() == 3);
48 assert(c.at(1) == "one");
49 assert(c.at(3) == "three");
50 assert(c.at(4) == "four");
52 assert(c.erase(2) == 0);
53 assert(c.size() == 3);
54 assert(c.at(1) == "one");
55 assert(c.at(3) == "three");
56 assert(c.at(4) == "four");
58 assert(c.erase(4) == 1);
59 assert(c.size() == 2);
60 assert(c.at(1) == "one");
61 assert(c.at(3) == "three");
63 assert(c.erase(4) == 0);
64 assert(c.size() == 2);
65 assert(c.at(1) == "one");
66 assert(c.at(3) == "three");
68 assert(c.erase(1) == 1);
69 assert(c.size() == 1);
70 assert(c.at(3) == "three");
72 assert(c.erase(1) == 0);
73 assert(c.size() == 1);
74 assert(c.at(3) == "three");
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_map<int, std::string, std::hash<int>, std::equal_to<int>,
85 min_allocator<std::pair<const int, std::string>>> C;
86 typedef std::pair<int, std::string> P;
96 C c(a, a + sizeof(a)/sizeof(a[0]));
97 assert(c.erase(5) == 0);
98 assert(c.size() == 4);
99 assert(c.at(1) == "one");
100 assert(c.at(2) == "two");
101 assert(c.at(3) == "three");
102 assert(c.at(4) == "four");
104 assert(c.erase(2) == 1);
105 assert(c.size() == 3);
106 assert(c.at(1) == "one");
107 assert(c.at(3) == "three");
108 assert(c.at(4) == "four");
110 assert(c.erase(2) == 0);
111 assert(c.size() == 3);
112 assert(c.at(1) == "one");
113 assert(c.at(3) == "three");
114 assert(c.at(4) == "four");
116 assert(c.erase(4) == 1);
117 assert(c.size() == 2);
118 assert(c.at(1) == "one");
119 assert(c.at(3) == "three");
121 assert(c.erase(4) == 0);
122 assert(c.size() == 2);
123 assert(c.at(1) == "one");
124 assert(c.at(3) == "three");
126 assert(c.erase(1) == 1);
127 assert(c.size() == 1);
128 assert(c.at(3) == "three");
130 assert(c.erase(1) == 0);
131 assert(c.size() == 1);
132 assert(c.at(3) == "three");
134 assert(c.erase(3) == 1);
135 assert(c.size() == 0);
137 assert(c.erase(3) == 0);
138 assert(c.size() == 0);