To make it possible to deal with insertion in the same way as writing into an array, a special kind of iterator
are provided in the library.
With regular iterator classes,
while (first != last) *result++ = *first++;
causes a range [first, last
to be copied into a range starting with result.
The same code with
being an insert iterator will insert corresponding elements into the container.
An insert iterator is constructed from a container and possibly one of its iterators pointing to where
insertion takes place if it is neither at the beginning nor at the end of the container.
Insert iterators meet the requirements of output iterators.
returns the insert iterator itself.
operator=(const T& x)
is defined on insert iterators to allow writing into them, it inserts
right before where the insert iterator is pointing.
In other words, an insert iterator is like a cursor pointing into the
container where the insertion takes place.
inserts elements at the end of a container,
inserts elements at the beginning of a container, and
inserts elements where the iterator points to in a container.
functions making the insert iterators out of a container.