llvm-project

Форк
0
120 строк · 3.7 Кб
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
// <set>
10

11
// class multiset
12

13
// multiset(const multiset& m);
14

15
#include <set>
16
#include <cassert>
17

18
#include "test_macros.h"
19
#include "../../../test_compare.h"
20
#include "test_allocator.h"
21

22
int main(int, char**)
23
{
24
    {
25
        typedef int V;
26
        V ar[] =
27
        {
28
            1,
29
            1,
30
            1,
31
            2,
32
            2,
33
            2,
34
            3,
35
            3,
36
            3
37
        };
38
        typedef test_less<int> C;
39
        typedef test_allocator<V> A;
40
        std::multiset<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
41
        std::multiset<int, C, A> m = mo;
42
        assert(m.get_allocator() == A(7));
43
        assert(m.key_comp() == C(5));
44
        assert(m.size() == 9);
45
        assert(std::distance(m.begin(), m.end()) == 9);
46
        assert(*std::next(m.begin(), 0) == 1);
47
        assert(*std::next(m.begin(), 1) == 1);
48
        assert(*std::next(m.begin(), 2) == 1);
49
        assert(*std::next(m.begin(), 3) == 2);
50
        assert(*std::next(m.begin(), 4) == 2);
51
        assert(*std::next(m.begin(), 5) == 2);
52
        assert(*std::next(m.begin(), 6) == 3);
53
        assert(*std::next(m.begin(), 7) == 3);
54
        assert(*std::next(m.begin(), 8) == 3);
55

56
        assert(mo.get_allocator() == A(7));
57
        assert(mo.key_comp() == C(5));
58
        assert(mo.size() == 9);
59
        assert(std::distance(mo.begin(), mo.end()) == 9);
60
        assert(*std::next(mo.begin(), 0) == 1);
61
        assert(*std::next(mo.begin(), 1) == 1);
62
        assert(*std::next(mo.begin(), 2) == 1);
63
        assert(*std::next(mo.begin(), 3) == 2);
64
        assert(*std::next(mo.begin(), 4) == 2);
65
        assert(*std::next(mo.begin(), 5) == 2);
66
        assert(*std::next(mo.begin(), 6) == 3);
67
        assert(*std::next(mo.begin(), 7) == 3);
68
        assert(*std::next(mo.begin(), 8) == 3);
69
    }
70
#if TEST_STD_VER >= 11
71
    {
72
        typedef int V;
73
        V ar[] =
74
        {
75
            1,
76
            1,
77
            1,
78
            2,
79
            2,
80
            2,
81
            3,
82
            3,
83
            3
84
        };
85
        typedef test_less<int> C;
86
        typedef other_allocator<V> A;
87
        std::multiset<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
88
        std::multiset<int, C, A> m = mo;
89
        assert(m.get_allocator() == A(-2));
90
        assert(m.key_comp() == C(5));
91
        assert(m.size() == 9);
92
        assert(std::distance(m.begin(), m.end()) == 9);
93
        assert(*std::next(m.begin(), 0) == 1);
94
        assert(*std::next(m.begin(), 1) == 1);
95
        assert(*std::next(m.begin(), 2) == 1);
96
        assert(*std::next(m.begin(), 3) == 2);
97
        assert(*std::next(m.begin(), 4) == 2);
98
        assert(*std::next(m.begin(), 5) == 2);
99
        assert(*std::next(m.begin(), 6) == 3);
100
        assert(*std::next(m.begin(), 7) == 3);
101
        assert(*std::next(m.begin(), 8) == 3);
102

103
        assert(mo.get_allocator() == A(7));
104
        assert(mo.key_comp() == C(5));
105
        assert(mo.size() == 9);
106
        assert(std::distance(mo.begin(), mo.end()) == 9);
107
        assert(*std::next(mo.begin(), 0) == 1);
108
        assert(*std::next(mo.begin(), 1) == 1);
109
        assert(*std::next(mo.begin(), 2) == 1);
110
        assert(*std::next(mo.begin(), 3) == 2);
111
        assert(*std::next(mo.begin(), 4) == 2);
112
        assert(*std::next(mo.begin(), 5) == 2);
113
        assert(*std::next(mo.begin(), 6) == 3);
114
        assert(*std::next(mo.begin(), 7) == 3);
115
        assert(*std::next(mo.begin(), 8) == 3);
116
    }
117
#endif
118

119
  return 0;
120
}
121

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

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

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

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