1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// <map>
10
11// class map
12
13// template <class InputIterator>
14// map(InputIterator first, InputIterator last, const key_compare& comp);
15
16#include <map>
17#include <cassert>
18
19#include "test_macros.h"
20#include "../../../test_compare.h"
21#include "min_allocator.h"
22
23int main(int, char**) {
24 {
25 typedef std::pair<const int, double> V;
26 V ar[] = {
27 V(1, 1),
28 V(1, 1.5),
29 V(1, 2),
30 V(2, 1),
31 V(2, 1.5),
32 V(2, 2),
33 V(3, 1),
34 V(3, 1.5),
35 V(3, 2),
36 };
37 typedef test_less<int> C;
38 std::map<int, double, C> m(ar, ar + sizeof(ar) / sizeof(ar[0]), C(5));
39 assert(m.key_comp() == C(5));
40 assert(m.size() == 3);
41 assert(std::distance(m.begin(), m.end()) == 3);
42 assert(*m.begin() == V(1, 1));
43 assert(*std::next(m.begin()) == V(2, 1));
44 assert(*std::next(m.begin(), 2) == V(3, 1));
45 }
46#if TEST_STD_VER >= 11
47 {
48 typedef std::pair<const int, double> V;
49 V ar[] = {
50 V(1, 1),
51 V(1, 1.5),
52 V(1, 2),
53 V(2, 1),
54 V(2, 1.5),
55 V(2, 2),
56 V(3, 1),
57 V(3, 1.5),
58 V(3, 2),
59 };
60 typedef test_less<int> C;
61 std::map<int, double, C, min_allocator<std::pair<const int, double>>> m(ar, ar + sizeof(ar) / sizeof(ar[0]), C(5));
62 assert(m.key_comp() == C(5));
63 assert(m.size() == 3);
64 assert(std::distance(m.begin(), m.end()) == 3);
65 assert(*m.begin() == V(1, 1));
66 assert(*std::next(m.begin()) == V(2, 1));
67 assert(*std::next(m.begin(), 2) == V(3, 1));
68 }
69#endif
70
71 return 0;
72}
73

source code of libcxx/test/std/containers/associative/map/map.cons/iter_iter_comp.pass.cpp