blob: c6844d9c8773bbff5a23b762158851c49b9c8bb8 [file] [log] [blame]
Howard Hinnant3e519522010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnant5b08a8a2010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnant3e519522010-05-11 19:42:16 +00004//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <map>
11
12// class multimap
13
14// iterator begin();
15// const_iterator begin() const;
16// iterator end();
17// const_iterator end() const;
Howard Hinnant8f2f7e72010-08-22 00:15:28 +000018//
Howard Hinnant3e519522010-05-11 19:42:16 +000019// reverse_iterator rbegin();
20// const_reverse_iterator rbegin() const;
21// reverse_iterator rend();
22// const_reverse_iterator rend() const;
Howard Hinnant8f2f7e72010-08-22 00:15:28 +000023//
Howard Hinnant3e519522010-05-11 19:42:16 +000024// const_iterator cbegin() const;
25// const_iterator cend() const;
26// const_reverse_iterator crbegin() const;
27// const_reverse_iterator crend() const;
28
29#include <map>
30#include <cassert>
31
32int main()
33{
34 {
35 typedef std::pair<const int, double> V;
36 V ar[] =
37 {
38 V(1, 1),
39 V(1, 1.5),
40 V(1, 2),
41 V(2, 1),
42 V(2, 1.5),
43 V(2, 2),
44 V(3, 1),
45 V(3, 1.5),
46 V(3, 2),
47 V(4, 1),
48 V(4, 1.5),
49 V(4, 2),
50 V(5, 1),
51 V(5, 1.5),
52 V(5, 2),
53 V(6, 1),
54 V(6, 1.5),
55 V(6, 2),
56 V(7, 1),
57 V(7, 1.5),
58 V(7, 2),
59 V(8, 1),
60 V(8, 1.5),
61 V(8, 2)
62 };
63 std::multimap<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
64 assert(std::distance(m.begin(), m.end()) == m.size());
65 assert(std::distance(m.rbegin(), m.rend()) == m.size());
66 std::multimap<int, double>::iterator i = m.begin();
67 std::multimap<int, double>::const_iterator k = i;
68 assert(i == k);
69 for (int j = 1; j <= 8; ++j)
70 for (double d = 1; d <= 2; d += .5, ++i)
71 {
72 assert(i->first == j);
73 assert(i->second == d);
74 i->second = 2.5;
75 assert(i->second == 2.5);
76 }
77 }
78 {
79 typedef std::pair<const int, double> V;
80 V ar[] =
81 {
82 V(1, 1),
83 V(1, 1.5),
84 V(1, 2),
85 V(2, 1),
86 V(2, 1.5),
87 V(2, 2),
88 V(3, 1),
89 V(3, 1.5),
90 V(3, 2),
91 V(4, 1),
92 V(4, 1.5),
93 V(4, 2),
94 V(5, 1),
95 V(5, 1.5),
96 V(5, 2),
97 V(6, 1),
98 V(6, 1.5),
99 V(6, 2),
100 V(7, 1),
101 V(7, 1.5),
102 V(7, 2),
103 V(8, 1),
104 V(8, 1.5),
105 V(8, 2)
106 };
107 const std::multimap<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
108 assert(std::distance(m.begin(), m.end()) == m.size());
109 assert(std::distance(m.cbegin(), m.cend()) == m.size());
110 assert(std::distance(m.rbegin(), m.rend()) == m.size());
111 assert(std::distance(m.crbegin(), m.crend()) == m.size());
112 std::multimap<int, double>::const_iterator i = m.begin();
113 for (int j = 1; j <= 8; ++j)
114 for (double d = 1; d <= 2; d += .5, ++i)
115 {
116 assert(i->first == j);
117 assert(i->second == d);
118 }
119 }
120}