cub::CountingInputIterator

Defined in cub/iterator/counting_input_iterator.cuh

template<typename ValueType, typename OffsetT = ptrdiff_t>
class CountingInputIterator

A random-access input generator for dereferencing a sequence of incrementing integer values.

Overview

  • After initializing a CountingInputIterator to a certain integer base, read references at offset will return the value base + offset.

  • Can be constructed, manipulated, dereferenced, and exchanged within and between host and device functions.

  • Compatible with Thrust API v1.7 or newer.

Snippet

The code snippet below illustrates the use of CountingInputIterator to dereference a sequence of incrementing integers.

#include <cub/cub.cuh>   // or equivalently <cub/iterator/counting_input_iterator.cuh>

cub::CountingInputIterator<int> itr(5);

printf("%d\n", itr[0]);      // 5
printf("%d\n", itr[1]);      // 6
printf("%d\n", itr[2]);      // 7
printf("%d\n", itr[50]);     // 55

Template Parameters
  • ValueType – The value type of this iterator

  • OffsetT – The difference type of this iterator (Default: ptrdiff_t)

Public Types

using self_type = CountingInputIterator

My own type.

using difference_type = OffsetT

Type to express the result of subtracting one iterator from another.

using value_type = ValueType

The type of the element the iterator can point to.

using pointer = ValueType*

The type of a pointer to an element the iterator can point to.

using reference = ValueType

The type of a reference to an element the iterator can point to.

using iterator_category = typename THRUST_NS_QUALIFIER::detail::iterator_facade_category<THRUST_NS_QUALIFIER::any_system_tag, THRUST_NS_QUALIFIER::random_access_traversal_tag, value_type, reference>::type

Public Functions

inline CountingInputIterator(const ValueType &val)
Parameters

val – Starting value for the iterator instance to report

inline self_type operator++(int)

Postfix increment.

inline self_type operator++()

Prefix increment.

inline reference operator*() const

Indirection.

template<typename Distance>
inline self_type operator+(Distance n) const

Addition.

template<typename Distance>
inline self_type &operator+=(Distance n)

Addition assignment.

template<typename Distance>
inline self_type operator-(Distance n) const

Subtraction.

template<typename Distance>
inline self_type &operator-=(Distance n)

Subtraction assignment.

inline difference_type operator-(self_type other) const

Distance.

template<typename Distance>
inline reference operator[](Distance n) const

Array subscript.

inline pointer operator->()

Structure dereference.

inline bool operator==(const self_type &rhs) const

Equal to.

inline bool operator!=(const self_type &rhs) const

Not equal to.

Friends

inline friend std::ostream &operator<<(std::ostream &os, const self_type &itr)

ostream operator