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 21int 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 __cplusplus >= 201103L 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