insert_iter_size_value.pass.cpp revision 06086258d3d8c48a916ec51c33e1ad8f46821b81
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// iterator insert(const_iterator position, size_type n, const value_type& x); 14 15#include <vector> 16#include <cassert> 17 18#include "min_allocator.h" 19 20int main() 21{ 22 { 23 std::vector<bool> v(100); 24 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1); 25 assert(v.size() == 105); 26 assert(i == v.begin() + 10); 27 int j; 28 for (j = 0; j < 10; ++j) 29 assert(v[j] == 0); 30 for (; j < 15; ++j) 31 assert(v[j] == 1); 32 for (++j; j < v.size(); ++j) 33 assert(v[j] == 0); 34 } 35 { 36 std::vector<bool> v(100); 37 while(v.size() < v.capacity()) v.push_back(false); 38 size_t sz = v.size(); 39 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1); 40 assert(v.size() == sz + 5); 41 assert(i == v.begin() + 10); 42 int j; 43 for (j = 0; j < 10; ++j) 44 assert(v[j] == 0); 45 for (; j < 15; ++j) 46 assert(v[j] == 1); 47 for (++j; j < v.size(); ++j) 48 assert(v[j] == 0); 49 } 50 { 51 std::vector<bool> v(100); 52 while(v.size() < v.capacity()) v.push_back(false); 53 v.pop_back(); v.pop_back(); 54 size_t sz = v.size(); 55 std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 5, 1); 56 assert(v.size() == sz + 5); 57 assert(i == v.begin() + 10); 58 int j; 59 for (j = 0; j < 10; ++j) 60 assert(v[j] == 0); 61 for (; j < 15; ++j) 62 assert(v[j] == 1); 63 for (++j; j < v.size(); ++j) 64 assert(v[j] == 0); 65 } 66#if __cplusplus >= 201103L 67 { 68 std::vector<bool, min_allocator<bool>> v(100); 69 std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, 5, 1); 70 assert(v.size() == 105); 71 assert(i == v.begin() + 10); 72 int j; 73 for (j = 0; j < 10; ++j) 74 assert(v[j] == 0); 75 for (; j < 15; ++j) 76 assert(v[j] == 1); 77 for (++j; j < v.size(); ++j) 78 assert(v[j] == 0); 79 } 80#endif 81} 82