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 multiset 13 14 // size_type erase(const key_type& k); 15 16 #include <set> 17 #include <cassert> 18 19 #include "min_allocator.h" 20 21 int main() 22 { 23 { 24 typedef std::multiset<int> M; 25 typedef int V; 26 typedef M::size_type I; 27 V ar[] = 28 { 29 3, 30 3, 31 3, 32 5, 33 5, 34 5, 35 7, 36 7, 37 7 38 }; 39 M m(ar, ar + sizeof(ar)/sizeof(ar[0])); 40 assert(m.size() == 9); 41 I i = m.erase(6); 42 assert(m.size() == 9); 43 assert(i == 0); 44 assert(*next(m.begin(), 0) == 3); 45 assert(*next(m.begin(), 1) == 3); 46 assert(*next(m.begin(), 2) == 3); 47 assert(*next(m.begin(), 3) == 5); 48 assert(*next(m.begin(), 4) == 5); 49 assert(*next(m.begin(), 5) == 5); 50 assert(*next(m.begin(), 6) == 7); 51 assert(*next(m.begin(), 7) == 7); 52 assert(*next(m.begin(), 8) == 7); 53 54 i = m.erase(5); 55 assert(m.size() == 6); 56 assert(i == 3); 57 assert(*next(m.begin(), 0) == 3); 58 assert(*next(m.begin(), 1) == 3); 59 assert(*next(m.begin(), 2) == 3); 60 assert(*next(m.begin(), 3) == 7); 61 assert(*next(m.begin(), 4) == 7); 62 assert(*next(m.begin(), 5) == 7); 63 64 i = m.erase(3); 65 assert(m.size() == 3); 66 assert(i == 3); 67 assert(*next(m.begin(), 0) == 7); 68 assert(*next(m.begin(), 1) == 7); 69 assert(*next(m.begin(), 2) == 7); 70 71 i = m.erase(7); 72 assert(m.size() == 0); 73 assert(i == 3); 74 } 75 #if TEST_STD_VER >= 11 76 { 77 typedef std::multiset<int, std::less<int>, min_allocator<int>> M; 78 typedef int V; 79 typedef M::size_type I; 80 V ar[] = 81 { 82 3, 83 3, 84 3, 85 5, 86 5, 87 5, 88 7, 89 7, 90 7 91 }; 92 M m(ar, ar + sizeof(ar)/sizeof(ar[0])); 93 assert(m.size() == 9); 94 I i = m.erase(6); 95 assert(m.size() == 9); 96 assert(i == 0); 97 assert(*next(m.begin(), 0) == 3); 98 assert(*next(m.begin(), 1) == 3); 99 assert(*next(m.begin(), 2) == 3); 100 assert(*next(m.begin(), 3) == 5); 101 assert(*next(m.begin(), 4) == 5); 102 assert(*next(m.begin(), 5) == 5); 103 assert(*next(m.begin(), 6) == 7); 104 assert(*next(m.begin(), 7) == 7); 105 assert(*next(m.begin(), 8) == 7); 106 107 i = m.erase(5); 108 assert(m.size() == 6); 109 assert(i == 3); 110 assert(*next(m.begin(), 0) == 3); 111 assert(*next(m.begin(), 1) == 3); 112 assert(*next(m.begin(), 2) == 3); 113 assert(*next(m.begin(), 3) == 7); 114 assert(*next(m.begin(), 4) == 7); 115 assert(*next(m.begin(), 5) == 7); 116 117 i = m.erase(3); 118 assert(m.size() == 3); 119 assert(i == 3); 120 assert(*next(m.begin(), 0) == 7); 121 assert(*next(m.begin(), 1) == 7); 122 assert(*next(m.begin(), 2) == 7); 123 124 i = m.erase(7); 125 assert(m.size() == 0); 126 assert(i == 3); 127 } 128 #endif 129 } 130