...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::compute::counting_iterator — The counting_iterator class implements a counting iterator.
// In header: <boost/compute/iterator/counting_iterator.hpp> template<typename T> class counting_iterator { public: // types typedef unspecified super_type; typedef super_type::reference reference; typedef super_type::difference_type difference_type; // construct/copy/destruct counting_iterator(const T &); counting_iterator(const counting_iterator< T > &); counting_iterator< T > & operator=(const counting_iterator< T > &); ~counting_iterator(); // public member functions size_t get_index() const; template<typename Expr> unspecified operator[](const Expr &) const; // private member functions reference dereference() const; bool equal(const counting_iterator< T > &) const; void increment(); void decrement(); void advance(difference_type); difference_type distance_to(const counting_iterator< T > &) const; };
A counting iterator returns an internal value (initialized with init
) which is incremented each time the iterator is incremented.
For example, this could be used to implement the iota() algorithm in terms of the copy() algorithm by copying from a range of counting iterators:
See Also:
make_counting_iterator()
counting_iterator
public
construct/copy/destructcounting_iterator(const T & init);
counting_iterator(const counting_iterator< T > & other);
counting_iterator< T > & operator=(const counting_iterator< T > & other);
~counting_iterator();
counting_iterator
private member functionsreference dereference() const;
bool equal(const counting_iterator< T > & other) const;
void increment();
void decrement();
void advance(difference_type n);
difference_type distance_to(const counting_iterator< T > & other) const;