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