1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <map>
11
12// class map
13
14// template <class InputIterator>
15//     map(InputIterator first, InputIterator last, const key_compare& comp);
16
17#include <map>
18#include <cassert>
19
20#include "../../../test_compare.h"
21#include "min_allocator.h"
22
23int main()
24{
25    {
26    typedef std::pair<const int, double> V;
27    V ar[] =
28    {
29        V(1, 1),
30        V(1, 1.5),
31        V(1, 2),
32        V(2, 1),
33        V(2, 1.5),
34        V(2, 2),
35        V(3, 1),
36        V(3, 1.5),
37        V(3, 2),
38    };
39    typedef test_compare<std::less<int> > C;
40    std::map<int, double, C> m(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5));
41    assert(m.key_comp() == C(5));
42    assert(m.size() == 3);
43    assert(distance(m.begin(), m.end()) == 3);
44    assert(*m.begin() == V(1, 1));
45    assert(*next(m.begin()) == V(2, 1));
46    assert(*next(m.begin(), 2) == V(3, 1));
47    }
48#if __cplusplus >= 201103L
49    {
50    typedef std::pair<const int, double> V;
51    V ar[] =
52    {
53        V(1, 1),
54        V(1, 1.5),
55        V(1, 2),
56        V(2, 1),
57        V(2, 1.5),
58        V(2, 2),
59        V(3, 1),
60        V(3, 1.5),
61        V(3, 2),
62    };
63    typedef test_compare<std::less<int> > C;
64    std::map<int, double, C, min_allocator<std::pair<const int, double>>> m(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5));
65    assert(m.key_comp() == C(5));
66    assert(m.size() == 3);
67    assert(distance(m.begin(), m.end()) == 3);
68    assert(*m.begin() == V(1, 1));
69    assert(*next(m.begin()) == V(2, 1));
70    assert(*next(m.begin(), 2) == V(3, 1));
71    }
72#endif
73}
74