• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // <set>
11 
12 // class set
13 
14 // pair<iterator,iterator>             equal_range(const key_type& k);
15 // pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
16 
17 #include <set>
18 #include <cassert>
19 
20 #include "../../min_allocator.h"
21 
main()22 int main()
23 {
24     {
25     typedef int V;
26     typedef std::set<int> M;
27     {
28         typedef std::pair<M::iterator, M::iterator> R;
29         V ar[] =
30         {
31             5,
32             7,
33             9,
34             11,
35             13,
36             15,
37             17,
38             19
39         };
40         M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
41         R r = m.equal_range(5);
42         assert(r.first == next(m.begin(), 0));
43         assert(r.second == next(m.begin(), 1));
44         r = m.equal_range(7);
45         assert(r.first == next(m.begin(), 1));
46         assert(r.second == next(m.begin(), 2));
47         r = m.equal_range(9);
48         assert(r.first == next(m.begin(), 2));
49         assert(r.second == next(m.begin(), 3));
50         r = m.equal_range(11);
51         assert(r.first == next(m.begin(), 3));
52         assert(r.second == next(m.begin(), 4));
53         r = m.equal_range(13);
54         assert(r.first == next(m.begin(), 4));
55         assert(r.second == next(m.begin(), 5));
56         r = m.equal_range(15);
57         assert(r.first == next(m.begin(), 5));
58         assert(r.second == next(m.begin(), 6));
59         r = m.equal_range(17);
60         assert(r.first == next(m.begin(), 6));
61         assert(r.second == next(m.begin(), 7));
62         r = m.equal_range(19);
63         assert(r.first == next(m.begin(), 7));
64         assert(r.second == next(m.begin(), 8));
65         r = m.equal_range(4);
66         assert(r.first == next(m.begin(), 0));
67         assert(r.second == next(m.begin(), 0));
68         r = m.equal_range(6);
69         assert(r.first == next(m.begin(), 1));
70         assert(r.second == next(m.begin(), 1));
71         r = m.equal_range(8);
72         assert(r.first == next(m.begin(), 2));
73         assert(r.second == next(m.begin(), 2));
74         r = m.equal_range(10);
75         assert(r.first == next(m.begin(), 3));
76         assert(r.second == next(m.begin(), 3));
77         r = m.equal_range(12);
78         assert(r.first == next(m.begin(), 4));
79         assert(r.second == next(m.begin(), 4));
80         r = m.equal_range(14);
81         assert(r.first == next(m.begin(), 5));
82         assert(r.second == next(m.begin(), 5));
83         r = m.equal_range(16);
84         assert(r.first == next(m.begin(), 6));
85         assert(r.second == next(m.begin(), 6));
86         r = m.equal_range(18);
87         assert(r.first == next(m.begin(), 7));
88         assert(r.second == next(m.begin(), 7));
89         r = m.equal_range(20);
90         assert(r.first == next(m.begin(), 8));
91         assert(r.second == next(m.begin(), 8));
92     }
93     {
94         typedef std::pair<M::const_iterator, M::const_iterator> R;
95         V ar[] =
96         {
97             5,
98             7,
99             9,
100             11,
101             13,
102             15,
103             17,
104             19
105         };
106         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
107         R r = m.equal_range(5);
108         assert(r.first == next(m.begin(), 0));
109         assert(r.second == next(m.begin(), 1));
110         r = m.equal_range(7);
111         assert(r.first == next(m.begin(), 1));
112         assert(r.second == next(m.begin(), 2));
113         r = m.equal_range(9);
114         assert(r.first == next(m.begin(), 2));
115         assert(r.second == next(m.begin(), 3));
116         r = m.equal_range(11);
117         assert(r.first == next(m.begin(), 3));
118         assert(r.second == next(m.begin(), 4));
119         r = m.equal_range(13);
120         assert(r.first == next(m.begin(), 4));
121         assert(r.second == next(m.begin(), 5));
122         r = m.equal_range(15);
123         assert(r.first == next(m.begin(), 5));
124         assert(r.second == next(m.begin(), 6));
125         r = m.equal_range(17);
126         assert(r.first == next(m.begin(), 6));
127         assert(r.second == next(m.begin(), 7));
128         r = m.equal_range(19);
129         assert(r.first == next(m.begin(), 7));
130         assert(r.second == next(m.begin(), 8));
131         r = m.equal_range(4);
132         assert(r.first == next(m.begin(), 0));
133         assert(r.second == next(m.begin(), 0));
134         r = m.equal_range(6);
135         assert(r.first == next(m.begin(), 1));
136         assert(r.second == next(m.begin(), 1));
137         r = m.equal_range(8);
138         assert(r.first == next(m.begin(), 2));
139         assert(r.second == next(m.begin(), 2));
140         r = m.equal_range(10);
141         assert(r.first == next(m.begin(), 3));
142         assert(r.second == next(m.begin(), 3));
143         r = m.equal_range(12);
144         assert(r.first == next(m.begin(), 4));
145         assert(r.second == next(m.begin(), 4));
146         r = m.equal_range(14);
147         assert(r.first == next(m.begin(), 5));
148         assert(r.second == next(m.begin(), 5));
149         r = m.equal_range(16);
150         assert(r.first == next(m.begin(), 6));
151         assert(r.second == next(m.begin(), 6));
152         r = m.equal_range(18);
153         assert(r.first == next(m.begin(), 7));
154         assert(r.second == next(m.begin(), 7));
155         r = m.equal_range(20);
156         assert(r.first == next(m.begin(), 8));
157         assert(r.second == next(m.begin(), 8));
158     }
159     }
160 #if __cplusplus >= 201103L
161     {
162     typedef int V;
163     typedef std::set<int, std::less<int>, min_allocator<int>> M;
164     typedef std::pair<M::iterator, M::iterator> R;
165     V ar[] =
166     {
167         5,
168         7,
169         9,
170         11,
171         13,
172         15,
173         17,
174         19
175     };
176     M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
177     R r = m.equal_range(5);
178     assert(r.first == next(m.begin(), 0));
179     assert(r.second == next(m.begin(), 1));
180     r = m.equal_range(7);
181     assert(r.first == next(m.begin(), 1));
182     assert(r.second == next(m.begin(), 2));
183     r = m.equal_range(9);
184     assert(r.first == next(m.begin(), 2));
185     assert(r.second == next(m.begin(), 3));
186     r = m.equal_range(11);
187     assert(r.first == next(m.begin(), 3));
188     assert(r.second == next(m.begin(), 4));
189     r = m.equal_range(13);
190     assert(r.first == next(m.begin(), 4));
191     assert(r.second == next(m.begin(), 5));
192     r = m.equal_range(15);
193     assert(r.first == next(m.begin(), 5));
194     assert(r.second == next(m.begin(), 6));
195     r = m.equal_range(17);
196     assert(r.first == next(m.begin(), 6));
197     assert(r.second == next(m.begin(), 7));
198     r = m.equal_range(19);
199     assert(r.first == next(m.begin(), 7));
200     assert(r.second == next(m.begin(), 8));
201     r = m.equal_range(4);
202     assert(r.first == next(m.begin(), 0));
203     assert(r.second == next(m.begin(), 0));
204     r = m.equal_range(6);
205     assert(r.first == next(m.begin(), 1));
206     assert(r.second == next(m.begin(), 1));
207     r = m.equal_range(8);
208     assert(r.first == next(m.begin(), 2));
209     assert(r.second == next(m.begin(), 2));
210     r = m.equal_range(10);
211     assert(r.first == next(m.begin(), 3));
212     assert(r.second == next(m.begin(), 3));
213     r = m.equal_range(12);
214     assert(r.first == next(m.begin(), 4));
215     assert(r.second == next(m.begin(), 4));
216     r = m.equal_range(14);
217     assert(r.first == next(m.begin(), 5));
218     assert(r.second == next(m.begin(), 5));
219     r = m.equal_range(16);
220     assert(r.first == next(m.begin(), 6));
221     assert(r.second == next(m.begin(), 6));
222     r = m.equal_range(18);
223     assert(r.first == next(m.begin(), 7));
224     assert(r.second == next(m.begin(), 7));
225     r = m.equal_range(20);
226     assert(r.first == next(m.begin(), 8));
227     assert(r.second == next(m.begin(), 8));
228     }
229 #endif
230 }
231