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 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