llvm-project

Форк
0
103 строки · 3.5 Кб
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 multimap
12

13
// template <class InputIterator>
14
//   void insert(InputIterator first, InputIterator last);
15

16
#include <map>
17
#include <cassert>
18

19
#include "test_macros.h"
20
#include "test_iterators.h"
21
#include "min_allocator.h"
22

23
int main(int, char**)
24
{
25
    {
26
        typedef std::multimap<int, double> M;
27
        typedef std::pair<int, double> P;
28
        P ar[] =
29
        {
30
            P(1, 1),
31
            P(1, 1.5),
32
            P(1, 2),
33
            P(2, 1),
34
            P(2, 1.5),
35
            P(2, 2),
36
            P(3, 1),
37
            P(3, 1.5),
38
            P(3, 2),
39
        };
40
        M m;
41
        m.insert(cpp17_input_iterator<P*>(ar), cpp17_input_iterator<P*>(ar + sizeof(ar)/sizeof(ar[0])));
42
        assert(m.size() == 9);
43
        assert(m.begin()->first == 1);
44
        assert(m.begin()->second == 1);
45
        assert(std::next(m.begin())->first == 1);
46
        assert(std::next(m.begin())->second == 1.5);
47
        assert(std::next(m.begin(), 2)->first == 1);
48
        assert(std::next(m.begin(), 2)->second == 2);
49
        assert(std::next(m.begin(), 3)->first == 2);
50
        assert(std::next(m.begin(), 3)->second == 1);
51
        assert(std::next(m.begin(), 4)->first == 2);
52
        assert(std::next(m.begin(), 4)->second == 1.5);
53
        assert(std::next(m.begin(), 5)->first == 2);
54
        assert(std::next(m.begin(), 5)->second == 2);
55
        assert(std::next(m.begin(), 6)->first == 3);
56
        assert(std::next(m.begin(), 6)->second == 1);
57
        assert(std::next(m.begin(), 7)->first == 3);
58
        assert(std::next(m.begin(), 7)->second == 1.5);
59
        assert(std::next(m.begin(), 8)->first == 3);
60
        assert(std::next(m.begin(), 8)->second == 2);
61
    }
62
#if TEST_STD_VER >= 11
63
    {
64
        typedef std::multimap<int, double, std::less<int>, min_allocator<std::pair<const int, double>>> M;
65
        typedef std::pair<int, double> P;
66
        P ar[] =
67
        {
68
            P(1, 1),
69
            P(1, 1.5),
70
            P(1, 2),
71
            P(2, 1),
72
            P(2, 1.5),
73
            P(2, 2),
74
            P(3, 1),
75
            P(3, 1.5),
76
            P(3, 2),
77
        };
78
        M m;
79
        m.insert(cpp17_input_iterator<P*>(ar), cpp17_input_iterator<P*>(ar + sizeof(ar)/sizeof(ar[0])));
80
        assert(m.size() == 9);
81
        assert(m.begin()->first == 1);
82
        assert(m.begin()->second == 1);
83
        assert(std::next(m.begin())->first == 1);
84
        assert(std::next(m.begin())->second == 1.5);
85
        assert(std::next(m.begin(), 2)->first == 1);
86
        assert(std::next(m.begin(), 2)->second == 2);
87
        assert(std::next(m.begin(), 3)->first == 2);
88
        assert(std::next(m.begin(), 3)->second == 1);
89
        assert(std::next(m.begin(), 4)->first == 2);
90
        assert(std::next(m.begin(), 4)->second == 1.5);
91
        assert(std::next(m.begin(), 5)->first == 2);
92
        assert(std::next(m.begin(), 5)->second == 2);
93
        assert(std::next(m.begin(), 6)->first == 3);
94
        assert(std::next(m.begin(), 6)->second == 1);
95
        assert(std::next(m.begin(), 7)->first == 3);
96
        assert(std::next(m.begin(), 7)->second == 1.5);
97
        assert(std::next(m.begin(), 8)->first == 3);
98
        assert(std::next(m.begin(), 8)->second == 2);
99
    }
100
#endif
101

102
  return 0;
103
}
104

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.