Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


Class template add_iterator

boost::icl::add_iterator — Performes an addition using a container's memberfunction add, when operator= is called.


// In header: <boost/icl/iterator.hpp>

template<typename ContainerT> 
class add_iterator {
  // types
  typedef ContainerT               container_type;     // The container's type. 
  typedef std::output_iterator_tag iterator_category;
  typedef void                     value_type;       
  typedef void                     difference_type;  
  typedef void                     pointer;          
  typedef void                     reference;        

  // construct/copy/destruct
  add_iterator(ContainerT &, typename ContainerT::iterator);
  add_iterator & operator=(typename ContainerT::const_reference);

  // public member functions
  add_iterator & operator*();
  add_iterator & operator++();
  add_iterator & operator++(int);


add_iterator public construct/copy/destruct

  1. add_iterator(ContainerT & cont, typename ContainerT::iterator iter);

    An add_iterator is constructed with a container and a position that has to be maintained.

  2. add_iterator & operator=(typename ContainerT::const_reference value);

    This assignment operator adds the value before the current position. It maintains it's position by incrementing after addition.

add_iterator public member functions

  1. add_iterator & operator*();
  2. add_iterator & operator++();
  3. add_iterator & operator++(int);