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 // template <class InputIterator>
15 //   void insert(InputIterator first, InputIterator last);
16 
17 #include <set>
18 #include <cassert>
19 
20 #include "test_iterators.h"
21 #include "../../min_allocator.h"
22 
23 int main()
24 {
25     {
26         typedef std::set<int> M;
27         typedef int V;
28         V ar[] =
29         {
30             1,
31             1,
32             1,
33             2,
34             2,
35             2,
36             3,
37             3,
38             3
39         };
40         M m;
41         m.insert(input_iterator<const V*>(ar),
42                  input_iterator<const V*>(ar + sizeof(ar)/sizeof(ar[0])));
43         assert(m.size() == 3);
44         assert(*m.begin() == 1);
45         assert(*next(m.begin()) == 2);
46         assert(*next(m.begin(), 2) == 3);
47     }
48 #if __cplusplus >= 201103L
49     {
50         typedef std::set<int, std::less<int>, min_allocator<int>> M;
51         typedef int V;
52         V ar[] =
53         {
54             1,
55             1,
56             1,
57             2,
58             2,
59             2,
60             3,
61             3,
62             3
63         };
64         M m;
65         m.insert(input_iterator<const V*>(ar),
66                  input_iterator<const V*>(ar + sizeof(ar)/sizeof(ar[0])));
67         assert(m.size() == 3);
68         assert(*m.begin() == 1);
69         assert(*next(m.begin()) == 2);
70         assert(*next(m.begin(), 2) == 3);
71     }
72 #endif
73 }
74