blob: b83c802c04cf65cb15e672ecb05f92c301c2ca1d [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 multimap
13
14// iterator insert(const_iterator position, const value_type& v);
15
16#include <map>
17#include <cassert>
18
Marshall Clow061d0cc2013-11-26 20:58:02 +000019#include "min_allocator.h"
Howard Hinnant70342b92013-06-19 21:29:40 +000020
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000021int main()
22{
Dan Albert1d4a1ed2016-05-25 22:36:09 -070023 {
24 typedef std::multimap<int, double> M;
25 typedef M::iterator R;
26 M m;
27 R r = m.insert(m.end(), M::value_type(2, 2.5));
28 assert(r == m.begin());
29 assert(m.size() == 1);
30 assert(r->first == 2);
31 assert(r->second == 2.5);
32
33 r = m.insert(m.end(), M::value_type(1, 1.5));
34 assert(r == m.begin());
35 assert(m.size() == 2);
36 assert(r->first == 1);
37 assert(r->second == 1.5);
38
39 r = m.insert(m.end(), M::value_type(3, 3.5));
40 assert(r == prev(m.end()));
41 assert(m.size() == 3);
42 assert(r->first == 3);
43 assert(r->second == 3.5);
44
45 r = m.insert(prev(m.end()), M::value_type(3, 4.5));
46 assert(r == prev(m.end(), 2));
47 assert(m.size() == 4);
48 assert(r->first == 3);
49 assert(r->second == 4.5);
50 }
51#if __cplusplus >= 201103L
Howard Hinnant70342b92013-06-19 21:29:40 +000052 {
53 typedef std::multimap<int, double, std::less<int>, min_allocator<std::pair<const int, double>>> M;
Dan Albert1d4a1ed2016-05-25 22:36:09 -070054 typedef M::iterator R;
55 M m;
56 R r = m.insert(m.end(), M::value_type(2, 2.5));
57 assert(r == m.begin());
58 assert(m.size() == 1);
59 assert(r->first == 2);
60 assert(r->second == 2.5);
61
62 r = m.insert(m.end(), M::value_type(1, 1.5));
63 assert(r == m.begin());
64 assert(m.size() == 2);
65 assert(r->first == 1);
66 assert(r->second == 1.5);
67
68 r = m.insert(m.end(), M::value_type(3, 3.5));
69 assert(r == prev(m.end()));
70 assert(m.size() == 3);
71 assert(r->first == 3);
72 assert(r->second == 3.5);
73
74 r = m.insert(prev(m.end()), M::value_type(3, 4.5));
75 assert(r == prev(m.end(), 2));
76 assert(m.size() == 4);
77 assert(r->first == 3);
78 assert(r->second == 4.5);
Howard Hinnant70342b92013-06-19 21:29:40 +000079 }
80#endif
Howard Hinnantbc8d3f92010-05-11 19:42:16 +000081}