iter_iter.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <map>
11
12// class multimap
13
14// template <class InputIterator>
15//     multimap(InputIterator first, InputIterator last);
16
17#include <map>
18#include <cassert>
19
20int main()
21{
22    typedef std::pair<const int, double> V;
23    V ar[] =
24    {
25        V(1, 1),
26        V(1, 1.5),
27        V(1, 2),
28        V(2, 1),
29        V(2, 1.5),
30        V(2, 2),
31        V(3, 1),
32        V(3, 1.5),
33        V(3, 2),
34    };
35    std::multimap<int, double> m(ar, ar+sizeof(ar)/sizeof(ar[0]));
36    assert(m.size() == 9);
37    assert(distance(m.begin(), m.end()) == 9);
38    assert(*m.begin() == V(1, 1));
39    assert(*next(m.begin()) == V(1, 1.5));
40    assert(*next(m.begin(), 2) == V(1, 2));
41    assert(*next(m.begin(), 3) == V(2, 1));
42    assert(*next(m.begin(), 4) == V(2, 1.5));
43    assert(*next(m.begin(), 5) == V(2, 2));
44    assert(*next(m.begin(), 6) == V(3, 1));
45    assert(*next(m.begin(), 7) == V(3, 1.5));
46    assert(*next(m.begin(), 8) == V(3, 2));
47}
48