36 template <
typename T,
typename V,
typename P = V*,
typename R = V&>
37 class CircularIterator :
public std::iterator<std::bidirectional_iterator_tag, V, typename T::difference_type, P, R>
Implementation of a circular iterator.
type & operator=(const base_type &i)
Assignment operator from base type to circularized iterator.
type::pointer operator->() const
Structure dereferencing operator.
bool operator==(const type &rhs) const
Equality test of the pointing iterator only, not of the range iterators.
bool operator==(const base_type &rhs) const
Equality test of the pointing iterator only, not of the range iterators.
type operator++(int)
Post-increment operator works circularly: at the end of the range it jumps back to the beginning and ...
type & operator++()
Pre-increment operator works circularly: at the end of the range it jumps back to the beginning and k...
type::reference operator*() const
Dereferencing operator.
type & operator--()
Pre-decrement operator works circularly: at the beginning of the range it jumps to the end and keeps ...
bool operator!=(const type &rhs) const
Inequality test of the pointing iterator only, not of the range iterators.
type operator--(int)
Post-decrement operator works circularly: at the beginning of the range it jumps to the end and keeps...
bool operator!=(const base_type &rhs) const
Inequality test of the pointing iterator only, not of the range iterators.
CircularIterator(base_type b, base_type e, base_type i)
Constructor requires range and start value.