insert_iter_iter_iter.pass.cpp revision 0d5dff18974650a994e020eda4ba6fe4c16808f9
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. 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 "../../iterators.h"
19
20int main()
21{
22    {
23        std::vector<bool> v(100);
24        bool a[] = {1, 0, 0, 1, 1};
25        const unsigned N = sizeof(a)/sizeof(a[0]);
26        std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, input_iterator<const bool*>(a),
27                                        input_iterator<const bool*>(a+N));
28        assert(v.size() == 100 + N);
29        assert(i == v.begin() + 10);
30        int j;
31        for (j = 0; j < 10; ++j)
32            assert(v[j] == 0);
33        for (int k = 0; k < N; ++j, ++k)
34            assert(v[j] == a[k]);
35        for (; j < 105; ++j)
36            assert(v[j] == 0);
37    }
38    {
39        std::vector<bool> v(100);
40        bool a[] = {1, 0, 0, 1, 1};
41        const unsigned N = sizeof(a)/sizeof(a[0]);
42        std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, forward_iterator<const bool*>(a),
43                                        forward_iterator<const bool*>(a+N));
44        assert(v.size() == 100 + N);
45        assert(i == v.begin() + 10);
46        int j;
47        for (j = 0; j < 10; ++j)
48            assert(v[j] == 0);
49        for (int k = 0; k < N; ++j, ++k)
50            assert(v[j] == a[k]);
51        for (; j < 105; ++j)
52            assert(v[j] == 0);
53    }
54}
55