VMS Help
CXXLSTD, Iterators, front_inserter

 *Conan The Librarian

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

 NAME

   front_insert_iterator, front_inserter	 - An insert iterator used to
   insert items	at the beginning of a collection.

 SYNOPSIS

   #include <iterator>

   template <class Container>
   class	front_insert_iterator :	public output_iterator ;

 DESCRIPTION

   Insert iterators let you insert new elements into a collection
   rather	than copy a new element's value over the value of an
   existing element.  The class	front_insert_iterator is used to
   insert	items at the beginning of a collection.  The function
   front_inserter creates an instance of a front_insert_iterator	for a
   particular collection type.  A front_insert_iterator	can be used
   with deques	and lists, but not with	maps or sets.

   Note that a front_insert_iterator makes each element that it inserts
   the new front of the container.  This has	the effect of
   reversing	the order of the inserted elements.  For example, if
   you use a front_insert_iterator to insert "1" then "2" then "3" onto
   the	front of container exmpl, you will find,	after the
   three	insertions, that the first three elements of exmpl are "3 2
   1".

 INTERFACE

   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>
    front_insert_iterator<Container> front_inserter (Container&);

 CONSTRUCTOR

   explicit
   front_insert_iterator(Container& x);
      Constructor.  Creates an instance of a front_insert_iterator
      associated with container x.

 OPERATORS

   front_insert_iterator<Container>&
   operator=(const typename Container::value_type& value);
      Assignment	Operator. Inserts a copy of value on the front of the
      container, and returns *this.

   front_insert_iterator<Container>&
   operator*();
      Returns *this (the	input iterator itself).

   front_insert_iterator<Container>&
   operator++();

   front_insert_iterator<Container>
   operator++(int);
      Increments	the insert iterator and	returns	*this.

 NON-MEMBER FUNCTION

   template <class Container>
   front_insert_iterator<Container>
   front_inserter(Container& x)
      Returns a front_insert_iterator that will insert elements at the
      beginning of container x.  This	function allows	you to create
      front insert iterators inline.

 EXAMPLE

   //
   // ins_itr.cpp
   //
   #include <iterator>
   #include <deque>
   #include <iostream.h>

   int main ()
    {
      //
      //	Initialize a deque using an array.
      //
     int	arr[4] = { 3,4,7,8 };
     deque<int> d(arr+0,	arr+4);
      //
      //	Output the original deque.
      //
     cout << "Start with	a deque: " << endl << "	    ";
     copy(d.begin(), d.end(), ostream_iterator<int>(cout," "));
      //
      //	Insert into the	middle.
      //
     insert_iterator<deque<int> > ins(d,	d.begin()+2);
      *ins = 5; *ins = 6;
      //
      //	Output the new deque.
      //
     cout << endl << endl;
     cout << "Use an insert_iterator: " << endl << "	";
     copy(d.begin(), d.end(), ostream_iterator<int>(cout," "));
      //
      //	A deque	of four	1s.
      //
     deque<int> d2(4, 1);
      //
      //	Insert d2 at front of d.
      //
     copy(d2.begin(), d2.end(), front_inserter(d));
      //
      //	Output the new deque.
      //
     cout << endl << endl;
     cout << "Use a front_inserter: " <<	endl <<	"     ";
     copy(d.begin(), d.end(), ostream_iterator<int>(cout," "));
      //
      //	Insert d2 at back of d.
      //
     copy(d2.begin(), d2.end(), back_inserter(d));
      //
      //	Output the new deque.
      //
     cout << endl << endl;
     cout << "Use a back_inserter: " << endl << "     ";
     copy(d.begin(), d.end(), ostream_iterator<int>(cout," "));
     cout << endl;

     return 0;
    }

   Output :
   Start	with a deque:
       3	4 7 8
   Use an insert_iterator:
       3	4 5 6 7	8
   Use a	front_inserter:
       1	1 1 1 3	4 5 6 7	8
   Use a	back_inserter:
       1	1 1 1 3	4 5 6 7	8 1 1 1	1

   WARNINGS

   If your compiler does	not support default template parameters	then
   you need to always supply the Allocator template argument.  For
   instance you'll have to write:

   deque<int, allocator<int> >

   instead of:

   deque<int>

 SEE ALSO

   Insert Iterators

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