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);
16
17#include <map>
18#include <cassert>
19
20#include "min_allocator.h"
21
22int main()
23{
24    {
25    typedef std::pair<const int, double> V;
26    V ar[] =
27    {
28        V(1, 1),
29        V(1, 1.5),
30        V(1, 2),
31        V(2, 1),
32        V(2, 1.5),
33        V(2, 2),
34        V(3, 1),
35        V(3, 1.5),
36        V(3, 2),
37    };
38    std::map<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
39    assert(m.size() == 3);
40    assert(distance(m.begin(), m.end()) == 3);
41    assert(*m.begin() == V(1, 1));
42    assert(*next(m.begin()) == V(2, 1));
43    assert(*next(m.begin(), 2) == V(3, 1));
44    }
45#if TEST_STD_VER >= 11
46    {
47    typedef std::pair<const int, double> V;
48    V ar[] =
49    {
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    std::map<int, double, std::less<int>, min_allocator<std::pair<const int, double>>> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
61    assert(m.size() == 3);
62    assert(distance(m.begin(), m.end()) == 3);
63    assert(*m.begin() == V(1, 1));
64    assert(*next(m.begin()) == V(2, 1));
65    assert(*next(m.begin(), 2) == V(3, 1));
66    }
67#endif
68}
69