back_insert_iterator class template — Output iterator to push items back onto a container
template <typename Container> class back_insert_iterator : public iterator<output_iterator_tag,void,void,void,void> { protected: Container* container; public: typedef Container container_type; explicit back_insert_iterator(Container& x); back_insert_iterator<Container>& operator=(typename Container::const_reference value); back_insert_iterator<Container>& operator*( ); back_insert_iterator<Container>& operator++( ); back_insert_iterator<Container> operator++(int); };
The back_insert_iterator
class template implements an output iterator that stores elements in
a container by calling the container's push_back
function. The most convenient
way to create a back_insert_iterator
object is to use the
back_inserter
function
template.
The way back_insert_iterator
works seems slightly
unconventional, although it is perfectly reasonable for an output
iterator: the *
operator returns
the iterator, not an element of the container. Thus, the expression
*iter
=
value
assigns value
to the iterator
itself. The iterator's assignment operator appends value
to the underlying container by
calling the container's push_back
function. Thus, the iterator does not maintain any notion of a
position, and the increment operator is a no-op.
The following are the member functions of back_insert_iterator
:
explicit
back_insert_iterator
(Container& x)
Initializes the container
member with &x
.
back_insert_iterator<Container>&
operator=
(typename Container::const_reference
value)
Calls container->push_back(value)
. The
return value is *this
.
back_insert_iterator<Container>&
operator*
( )
Returns *this
.
back_insert_iterator<Container>&
operator++
( )
, back_insert_iterator<Container>&
operator++
(int)
Returns *this
with no
side effects.