##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::insert_iterator

From cppreference.com
< cpp‎ | iterator

Defined in header `<iterator>` |  |
template< class Container > class insert_iterator : public std::iterator< std::output_iterator_tag, void,void,void,void > |  | (until C++17)
template< class Container > class insert_iterator; |  | (since C++17)

`std::insert_iterator` is an `OutputIterator` that inserts elements into a container for which it was constructed, at the position pointed to by the supplied iterator. The container's `insert()` member function is called whenever the iterator (whether dereferenced or not) is assigned to. Incrementing the `std::insert_iterator` is a no-op.

### [edit] Member types

Member type | Definition
`container_type` | `Container`

### [edit] Member functions

(constructor) | constructs a new `insert_iterator` (public member function) [edit]
operator= | inserts an object into the associated container (public member function) [edit]
operator* | no-op (public member function) [edit]
operator++operator++(int) | no-op (public member function) [edit]

### [edit] Member objects

Member name | Definition
`container` (protected) | a pointer of type `Container*`
`iter` (protected) | an iterator of type `Container::iterator`

### [edit] Member types

Member type | Definition
`value_type` | void
`difference_type` | void
`pointer` | void
`reference` | void
`iterator_category` | std::output_iterator_tag

Note: before C++17, these member types are required to be obtained by inheriting from std::iterator<std::output_iterator_tag,void,void,void,void>.

### [edit] Example

Run this code

    #include <vector>
    #include <list>
    #include <iostream>
    #include <iterator>
    #include <algorithm>

    int main()
    {
        std::vector<int> v{1,2,3,4,5};
        std::list<int> l{-1,-2,-3};
        std::copy(v.begin(), v.end(), // may be simplified with std::inserter
                  std::insert_iterator<std::list<int>>(l, std::next(l.begin())));
        for (int n : l)
            std::cout << n << ' ';
        std::cout << '\n';
    }

Output:

    -1 1 2 3 4 5 -2 -3

### [edit] See also

inserter | creates a std::insert_iterator of type inferred from the argument (function template) [edit]
back_insert_iterator | iterator adaptor for insertion at the end of a container (class template) [edit]
front_insert_iterator | iterator adaptor for insertion at the front of a container (class template) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/iterator/insert_iterator&oldid=82976"