erase_iter_iter.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <set>
11
12// class multiset
13
14// iterator erase(const_iterator first, const_iterator last);
15
16#include <set>
17#include <cassert>
18
19int main()
20{
21    {
22        typedef std::multiset<int> M;
23        typedef int V;
24        typedef M::iterator 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(next(m.cbegin(), 5), next(m.cbegin(), 5));
39        assert(m.size() == 8);
40        assert(i == next(m.begin(), 5));
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(next(m.cbegin(), 3), next(m.cbegin(), 4));
51        assert(m.size() == 7);
52        assert(i == next(m.begin(), 3));
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(next(m.cbegin(), 2), next(m.cbegin(), 5));
62        assert(m.size() == 4);
63        assert(i == next(m.begin(), 2));
64        assert(*next(m.begin(), 0) == 1);
65        assert(*next(m.begin(), 1) == 2);
66        assert(*next(m.begin(), 2) == 7);
67        assert(*next(m.begin(), 3) == 8);
68
69        i = m.erase(next(m.cbegin(), 0), next(m.cbegin(), 2));
70        assert(m.size() == 2);
71        assert(i == next(m.begin(), 0));
72        assert(*next(m.begin(), 0) == 7);
73        assert(*next(m.begin(), 1) == 8);
74
75        i = m.erase(m.cbegin(), m.cend());
76        assert(m.size() == 0);
77        assert(i == m.end());
78    }
79}
80