llvm-project

Форк
0
96 строк · 2.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
// <set>
10

11
// class set
12

13
// set(const set& 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::set<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
41
        std::set<int, C, A> m = mo;
42
        assert(m.get_allocator() == A(7));
43
        assert(m.key_comp() == C(5));
44
        assert(m.size() == 3);
45
        assert(std::distance(m.begin(), m.end()) == 3);
46
        assert(*m.begin() == 1);
47
        assert(*std::next(m.begin()) == 2);
48
        assert(*std::next(m.begin(), 2) == 3);
49

50
        assert(mo.get_allocator() == A(7));
51
        assert(mo.key_comp() == C(5));
52
        assert(mo.size() == 3);
53
        assert(std::distance(mo.begin(), mo.end()) == 3);
54
        assert(*mo.begin() == 1);
55
        assert(*std::next(mo.begin()) == 2);
56
        assert(*std::next(mo.begin(), 2) == 3);
57
    }
58
#if TEST_STD_VER >= 11
59
    {
60
        typedef int V;
61
        V ar[] =
62
        {
63
            1,
64
            1,
65
            1,
66
            2,
67
            2,
68
            2,
69
            3,
70
            3,
71
            3
72
        };
73
        typedef test_less<int> C;
74
        typedef other_allocator<V> A;
75
        std::set<int, C, A> mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(7));
76
        std::set<int, C, A> m = mo;
77
        assert(m.get_allocator() == A(-2));
78
        assert(m.key_comp() == C(5));
79
        assert(m.size() == 3);
80
        assert(std::distance(m.begin(), m.end()) == 3);
81
        assert(*m.begin() == 1);
82
        assert(*std::next(m.begin()) == 2);
83
        assert(*std::next(m.begin(), 2) == 3);
84

85
        assert(mo.get_allocator() == A(7));
86
        assert(mo.key_comp() == C(5));
87
        assert(mo.size() == 3);
88
        assert(std::distance(mo.begin(), mo.end()) == 3);
89
        assert(*mo.begin() == 1);
90
        assert(*std::next(mo.begin()) == 2);
91
        assert(*std::next(mo.begin(), 2) == 3);
92
    }
93
#endif
94

95
  return 0;
96
}
97

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

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

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

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