std::front_insert_iterator(3)

NAME
std::front_insert_iterator - std::front_insert_iterator

Synopsis
   Defined in header <iterator>
   template< class Container >
   class front_insert_iterator : public std::iterator< (until C++17)
   std::output_iterator_tag,
   void,void,void,void >
   template< class Container > (since C++17)
   class front_insert_iterator;
   std::front_insert_iterator is an LegacyOutputIterator that prepends elements to a
   container for which it was constructed. The container's push_front() member function
   is called whenever the iterator (whether dereferenced or not) is assigned to.
   Incrementing the std::front_insert_iterator is a no-op.

Member types
   Member type Definition
   iterator_category std::output_iterator_tag
   value_type void
   difference_type void (until C++20)
                     std::ptrdiff_t (since C++20)
   pointer void
   reference void
   container_type Container
   Member types iterator_category, value_type, difference_type, pointer
   and reference are required to be obtained by inheriting from (until C++17)
   std::iterator<std::output_iterator_tag, void, void, void, void>.

Member functions
   constructor constructs a new front_insert_iterator
                   (public member function)
   operator= inserts an object into the associated container
                   (public member function)
   operator* no-op
                   (public member function)
   operator++ no-op
   operator++(int) (public member function)

Member objects
   Member name Definition
   container (protected) a pointer of type Container*

Example
// Run this code
 #include <vector>
 #include <deque>
 #include <iostream>
 #include <iterator>
 #include <algorithm>
 int main()
 {
     std::vector<int> v{1,2,3,4,5};
     std::deque<int> d;
     std::copy(v.begin(), v.end(),
               std::front_insert_iterator<std::deque<int>>(d)); // or std::front_inserter(d)
     for(int n : d)
         std::cout << n << ' ';
     std::cout << '\n';
 }

Output:
 5 4 3 2 1

See also
                        creates a std::front_insert_iterator of type inferred from the
   front_inserter argument
                        (function template)
   back_insert_iterator iterator adaptor for insertion at the end of a container
                        (class template)
   insert_iterator iterator adaptor for insertion into a container
                        (class template)