Standard C++ Library
Copyright 1998, Rogue Wave Software, Inc.
NAME
insert_iterator, inserter
- An insert iterator used to insert items into a collection
rather than overwrite the collection.
SYNOPSIS
#include <iterator>
template <class Container>
class insert_iterator;
DESCRIPTION
Insert iterators let you insert new elements into a collec-
tion rather than copy a new element's value over the value
of an existing element. The class_insert_iterator is used to
insert items into a specified location of a collection. The
function inserter creates an instance of an_insert_iterator
given a particular collection type and iterator. An
insert_iterator can be used with vectors, deques, lists,
maps and sets.
INTERFACE
template <class Container>
class insert_iterator : public
iterator<output_iterator_tag,void,void,void,void> ; {
protected:
Container* container;
public:
typedef Container container_type;
insert_iterator (Container&, typename
Container::iterator);
insert_iterator<Container>&
operator= (const typename Container::value_type&);
insert_iterator<Container>& operator* ();
insert_iterator<Container>& operator++ ();
insert_iterator<Container>& operator++ (int);
};
template <class Container, class Iterator>
insert_iterator<Container> inserter (Container&, Iterator)
TYPES
container_type
The type of container acted on by the iterator.
CONSTRUCTORS
insert_iterator(Container& x,
typename Container::iterator i);
Creates an instance of an insert_iterator associated with
container x and iterator i.
OPERATORS
insert_iterator<Container>&
operator=(const typename Container::value_type& value);
Inserts a copy of value into the container at the loca-
tion specified by the insert_iterator, increments the
iterator, and returns *this.
insert_iterator<Container>&
operator*();
Returns *this (the input iterator itself).
insert_iterator<Container>&
operator++();
insert_iterator<Container>&
operator++(int);
Increments the insert iterator and returns *this.
NON-MEMBER FUNCTIONS
template <class Container, class Iterator>
insert_iterator<Container>
inserter(Container& x, Iterator i);
Returns an insert_iterator that inserts elements into
container x at location i. This function allows you to
create insert iterators inline.
EXAMPLE
#include <iterator>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
//Initialize a vector using an array
int arr[4] = {3,4,7,8};
vector<int> v(arr,arr+4);
//Output the original vector
cout << "Start with a vector: " << endl << " ";
copy(v.begin(),v.end(),
ostream_iterator<int,char>(cout," "));
//Insert into the middle
insert_iterator<vector<int> > ins(v, v.begin()+2);
*ins = 5;
*ins = 6;
//Output the new vector
cout << endl << endl;
cout << "Use an insert_iterator: " << endl << " ";
copy(v.begin(),v.end(),
ostream_iterator<int,char>(cout," "));
return 0;
}
WARNINGS
If your compiler does not support default template parame-
ters, then you always need to supply the Allocator template
argument. For instance, you have to write:
vector<int, allocator<int> >
instead of:
vector<int>
If your compiler does not support namespaces, then you do
not need the using declaration for std.
SEE ALSO
back_insert_iterator, front_insert_iterator,
Insert_Iterators