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 // <vector>
11 // vector<bool>
12
13 // template <class Iter>
14 // iterator insert(const_iterator position, Iter first, Iter last);
15
16 #include <vector>
17 #include <cassert>
18 #include "test_iterators.h"
19 #include "min_allocator.h"
20
main()21 int main()
22 {
23 {
24 std::vector<bool> v(100);
25 bool a[] = {1, 0, 0, 1, 1};
26 const unsigned N = sizeof(a)/sizeof(a[0]);
27 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const bool*>(a),
28 input_iterator<const bool*>(a+N));
29 assert(v.size() == 100 + N);
30 assert(i == v.begin() + 10);
31 int j;
32 for (j = 0; j < 10; ++j)
33 assert(v[j] == 0);
34 for (int k = 0; k < N; ++j, ++k)
35 assert(v[j] == a[k]);
36 for (; j < 105; ++j)
37 assert(v[j] == 0);
38 }
39 {
40 std::vector<bool> v(100);
41 bool a[] = {1, 0, 0, 1, 1};
42 const unsigned N = sizeof(a)/sizeof(a[0]);
43 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
44 forward_iterator<const bool*>(a+N));
45 assert(v.size() == 100 + N);
46 assert(i == v.begin() + 10);
47 int j;
48 for (j = 0; j < 10; ++j)
49 assert(v[j] == 0);
50 for (int k = 0; k < N; ++j, ++k)
51 assert(v[j] == a[k]);
52 for (; j < 105; ++j)
53 assert(v[j] == 0);
54 }
55 #if __cplusplus >= 201103L
56 {
57 std::vector<bool, min_allocator<bool>> v(100);
58 bool a[] = {1, 0, 0, 1, 1};
59 const unsigned N = sizeof(a)/sizeof(a[0]);
60 std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const bool*>(a),
61 input_iterator<const bool*>(a+N));
62 assert(v.size() == 100 + N);
63 assert(i == v.begin() + 10);
64 int j;
65 for (j = 0; j < 10; ++j)
66 assert(v[j] == 0);
67 for (int k = 0; k < N; ++j, ++k)
68 assert(v[j] == a[k]);
69 for (; j < 105; ++j)
70 assert(v[j] == 0);
71 }
72 {
73 std::vector<bool, min_allocator<bool>> v(100);
74 bool a[] = {1, 0, 0, 1, 1};
75 const unsigned N = sizeof(a)/sizeof(a[0]);
76 std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
77 forward_iterator<const bool*>(a+N));
78 assert(v.size() == 100 + N);
79 assert(i == v.begin() + 10);
80 int j;
81 for (j = 0; j < 10; ++j)
82 assert(v[j] == 0);
83 for (int k = 0; k < N; ++j, ++k)
84 assert(v[j] == a[k]);
85 for (; j < 105; ++j)
86 assert(v[j] == 0);
87 }
88 #endif
89 }
90