blob: ab1144c60afdadeaf615d18cca7f33bceae33059 [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00001//===----------------------------------------------------------------------===//
2//
Howard Hinnantf5256e12010-05-11 21:36:01 +00003// The LLVM Compiler Infrastructure
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00004//
Howard Hinnantb64f8b02010-11-16 22:09:02 +00005// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
Howard Hinnantbc8d3f92010-05-11 19:42:16 +00007//
8//===----------------------------------------------------------------------===//
9
10// <map>
11
12// class map
13
14// mapped_type& operator[](const key_type& k);
15
16#include <map>
17#include <cassert>
18
Marshall Clow061d0cc2013-11-26 20:58:02 +000019#include "min_allocator.h"
Marshall Clow5cfc6ab2013-08-13 22:18:47 +000020#include "private_constructor.hpp"
Howard Hinnant70342b92013-06-19 21:29:40 +000021
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000022int main()
23{
Howard Hinnant70342b92013-06-19 21:29:40 +000024 {
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000025 typedef std::pair<const int, double> V;
26 V ar[] =
27 {
28 V(1, 1.5),
29 V(2, 2.5),
30 V(3, 3.5),
31 V(4, 4.5),
32 V(5, 5.5),
33 V(7, 7.5),
34 V(8, 8.5),
35 };
36 std::map<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
37 assert(m.size() == 7);
38 assert(m[1] == 1.5);
39 assert(m.size() == 7);
40 m[1] = -1.5;
41 assert(m[1] == -1.5);
42 assert(m.size() == 7);
43 assert(m[6] == 0);
44 assert(m.size() == 8);
45 m[6] = 6.5;
46 assert(m[6] == 6.5);
47 assert(m.size() == 8);
Howard Hinnant70342b92013-06-19 21:29:40 +000048 }
Dan Albert1d4a1ed2016-05-25 22:36:09 -070049#if __cplusplus >= 201103L
Howard Hinnant70342b92013-06-19 21:29:40 +000050 {
51 typedef std::pair<const int, double> V;
52 V ar[] =
53 {
54 V(1, 1.5),
55 V(2, 2.5),
56 V(3, 3.5),
57 V(4, 4.5),
58 V(5, 5.5),
59 V(7, 7.5),
60 V(8, 8.5),
61 };
62 std::map<int, double, std::less<int>, min_allocator<V>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
63 assert(m.size() == 7);
64 assert(m[1] == 1.5);
65 assert(m.size() == 7);
66 const int i = 1;
67 m[i] = -1.5;
68 assert(m[1] == -1.5);
69 assert(m.size() == 7);
70 assert(m[6] == 0);
71 assert(m.size() == 8);
72 m[6] = 6.5;
73 assert(m[6] == 6.5);
74 assert(m.size() == 8);
75 }
76#endif
Dan Albert1d4a1ed2016-05-25 22:36:09 -070077#if _LIBCPP_STD_VER > 11
Marshall Clow5cfc6ab2013-08-13 22:18:47 +000078 {
79 typedef std::pair<const int, double> V;
80 V ar[] =
81 {
82 V(1, 1.5),
83 V(2, 2.5),
84 V(3, 3.5),
85 V(4, 4.5),
86 V(5, 5.5),
87 V(7, 7.5),
88 V(8, 8.5),
89 };
90 std::map<int, double, std::less<>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
91
92 assert(m.size() == 7);
93 assert(m[1] == 1.5);
94 assert(m.size() == 7);
95 m[1] = -1.5;
96 assert(m[1] == -1.5);
97 assert(m.size() == 7);
98 assert(m[6] == 0);
99 assert(m.size() == 8);
100 m[6] = 6.5;
101 assert(m[6] == 6.5);
102 assert(m.size() == 8);
103 }
104#endif
Howard Hinnantbc8d3f92010-05-11 19:42:16 +0000105}