VMS Help
CXXLSTD, Iterators, Insert Iterators

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   Insert_Iterators  - Iterator adaptor that allows an iterator to
   insert into a container rather than overwrite elements in	the
   container.

 SYNOPSIS

   #include <iterator>

   template <class Container>
   class	insert_iterator	: public output_iterator;

   template <class Container>
   class	back_insert_iterator:public output_iterator;

   template <class Container>
   class	front_insert_iterator :	public output_iterator;

 DESCRIPTION

   Insert iterators are iterator	adaptors that let an iterator insert
   new elements	into a collection rather than overwrite	existing
   elements when copying to a container.  There are several types of
   insert iterator classes.

   +	  The class back_insert_iterator is used to insert items
        at the	end of a collection.	 The  function back_inserter
        can be used with an iterator	inline,	to create an instance
        of a back_insert_iterator for a particular collection type.

   +	  The class front_insert_iterator is used to insert items
        at the start of	a collection.  The function front_inserter
        creates an instance	of a front_insert_iterator for a
        particular collection type.

   +	  An insert_iterator inserts new items into a collection at
        a location defined by an iterator supplied to the constructor.
        Like the other insert iterators, insert_iterator has a helper
        function called inserter, which takes a collection and an
        iterator into that collection, and creates an instance of
        the insert_iterator.

 INTERFACE

   template <class Container>
   class	insert_iterator	: public output_iterator {

   public:
     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	back_insert_iterator : public output_iterator {

   public:
     explicit back_insert_iterator (Container&);
     back_insert_iterator<Container>&
      operator= (const typename Container::value_type&);
     back_insert_iterator<Container>& operator* ();
     back_insert_iterator<Container>& operator++	();
     back_insert_iterator<Container> operator++ (int);
   };

   template <class Container>
   class	front_insert_iterator :	public output_iterator {

   public:
     explicit front_insert_iterator (Container&);
     front_insert_iterator<Container>&
      operator= (const typename Container::value_type&);
     front_insert_iterator<Container>& operator*	();
     front_insert_iterator<Container>& operator++ ();
     front_insert_iterator<Container> operator++	(int);
   };

   template <class Container, class Iterator>
   insert_iterator<Container> inserter (Container&, Iterator);

   template <class Container>
   back_insert_iterator<Container> back_inserter	(Container&);

   template <class Container>
   front_insert_iterator<Container> front_inserter (Container&);

 SEE ALSO

   back_insert_iterator,	front_insert_iterator, insert_iterator

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help