OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT > Class Template Reference

A random-access input wrapper for transforming dereferenced values. More...

Detailed Description

template<typename ValueType, typename ConversionOp, typename InputIteratorT, typename OffsetT = ptrdiff_t>
class cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >

A random-access input wrapper for transforming dereferenced values.

Overview
  • TransformInputIteratorTwraps a unary conversion functor of type ConversionOp and a random-access input iterator of type InputIteratorT, using the former to produce references of type ValueType from the latter.
  • Can be used with any data type.
  • Can be constructed, manipulated, and exchanged within and between host and device functions. Wrapped host memory can only be dereferenced on the host, and wrapped device memory can only be dereferenced on the device.
  • Compatible with Thrust API v1.7 or newer.
Snippet
The code snippet below illustrates the use of TransformInputIteratorTto dereference an array of integers, tripling the values and converting them to doubles.
#include <cub/cub.cuh> // or equivalently <cub/iterator/transform_input_iterator.cuh>
// Functor for tripling integer values and converting to doubles
struct TripleDoubler
{
__host__ __device__ __forceinline__
double operator()(const int &a) const {
return double(a * 3);
}
};
// Declare, allocate, and initialize a device array
int *d_in; // e.g., [8, 6, 7, 5, 3, 0, 9]
TripleDoubler conversion_op;
// Create an iterator wrapper
// Within device code:
printf("%f\n", itr[0]); // 24.0
printf("%f\n", itr[1]); // 18.0
printf("%f\n", itr[6]); // 27.0
A random-access input wrapper for transforming dereferenced values.
Template Parameters
ValueTypeThe value type of this iterator
ConversionOpUnary functor type for mapping objects of type InputType to type ValueType. Must have member ValueType operator()(const InputType &datum).
InputIteratorTThe type of the wrapped input iterator
OffsetTThe difference type of this iterator (Default: ptrdiff_t)

Definition at line 117 of file transform_input_iterator.cuh.

Public Types

typedef TransformInputIterator self_type
 My own type.
 
typedef OffsetT difference_type
 Type to express the result of subtracting one iterator from another.
 
typedef ValueType value_type
 The type of the element the iterator can point to.
 
typedef ValueType * pointer
 The type of a pointer to an element the iterator can point to.
 
typedef ValueType reference
 The type of a reference to an element the iterator can point to.
 
typedef std::random_access_iterator_tag iterator_category
 The iterator category.
 

Public Member Functions

__host__ __device__ __forceinline__ TransformInputIterator (InputIteratorT input_itr, ConversionOp conversion_op)
 Constructor.
 
__host__ __device__ __forceinline__ self_type operator++ (int)
 Postfix increment.
 
__host__ __device__ __forceinline__ self_type operator++ ()
 Prefix increment.
 
__host__ __device__ __forceinline__ reference operator* () const
 Indirection.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_type operator+ (Distance n) const
 Addition.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_typeoperator+= (Distance n)
 Addition assignment.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_type operator- (Distance n) const
 Subtraction.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_typeoperator-= (Distance n)
 Subtraction assignment.
 
__host__ __device__ __forceinline__ difference_type operator- (self_type other) const
 Distance.
 
template<typename Distance >
__host__ __device__ __forceinline__ reference operator[] (Distance n) const
 Array subscript.
 
__host__ __device__ __forceinline__ pointer operator-> ()
 Structure dereference.
 
__host__ __device__ __forceinline__ bool operator== (const self_type &rhs)
 Equal to.
 
__host__ __device__ __forceinline__ bool operator!= (const self_type &rhs)
 Not equal to.
 

Private Attributes

ConversionOp conversion_op
 
InputIteratorT input_itr
 

Friends

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

Member Typedef Documentation

◆ difference_type

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef OffsetT cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::difference_type

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

Definition at line 123 of file transform_input_iterator.cuh.

◆ iterator_category

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef std::random_access_iterator_tag cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::iterator_category

The iterator category.

Definition at line 137 of file transform_input_iterator.cuh.

◆ pointer

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef ValueType* cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::pointer

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

Definition at line 125 of file transform_input_iterator.cuh.

◆ reference

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef ValueType cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::reference

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

Definition at line 126 of file transform_input_iterator.cuh.

◆ self_type

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef TransformInputIterator cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::self_type

My own type.

Definition at line 122 of file transform_input_iterator.cuh.

◆ value_type

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
typedef ValueType cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::value_type

The type of the element the iterator can point to.

Definition at line 124 of file transform_input_iterator.cuh.

Constructor & Destructor Documentation

◆ TransformInputIterator()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::TransformInputIterator ( InputIteratorT  input_itr,
ConversionOp  conversion_op 
)
inline

Constructor.

Parameters
input_itrInput iterator to wrap
conversion_opConversion functor to wrap

Definition at line 148 of file transform_input_iterator.cuh.

Member Function Documentation

◆ operator!=()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ bool cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator!= ( const self_type rhs)
inline

Not equal to.

Definition at line 235 of file transform_input_iterator.cuh.

◆ operator*()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ reference cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator* ( ) const
inline

Indirection.

Definition at line 172 of file transform_input_iterator.cuh.

◆ operator+()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator+ ( Distance  n) const
inline

Addition.

Definition at line 179 of file transform_input_iterator.cuh.

◆ operator++() [1/2]

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ self_type cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator++ ( )
inline

Prefix increment.

Definition at line 165 of file transform_input_iterator.cuh.

◆ operator++() [2/2]

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ self_type cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator++ ( int  )
inline

Postfix increment.

Definition at line 157 of file transform_input_iterator.cuh.

◆ operator+=()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type & cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator+= ( Distance  n)
inline

Addition assignment.

Definition at line 187 of file transform_input_iterator.cuh.

◆ operator-() [1/2]

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator- ( Distance  n) const
inline

Subtraction.

Definition at line 195 of file transform_input_iterator.cuh.

◆ operator-() [2/2]

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ difference_type cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator- ( self_type  other) const
inline

Distance.

Definition at line 210 of file transform_input_iterator.cuh.

◆ operator-=()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type & cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator-= ( Distance  n)
inline

Subtraction assignment.

Definition at line 203 of file transform_input_iterator.cuh.

◆ operator->()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ pointer cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator-> ( )
inline

Structure dereference.

Definition at line 223 of file transform_input_iterator.cuh.

◆ operator==()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ bool cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator== ( const self_type rhs)
inline

Equal to.

Definition at line 229 of file transform_input_iterator.cuh.

◆ operator[]()

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ reference cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::operator[] ( Distance  n) const
inline

Array subscript.

Definition at line 217 of file transform_input_iterator.cuh.

Friends And Related Symbol Documentation

◆ operator<<

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
std::ostream & operator<< ( std::ostream &  os,
const self_type itr 
)
friend

ostream operator

Definition at line 241 of file transform_input_iterator.cuh.

Field Documentation

◆ conversion_op

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
ConversionOp cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::conversion_op
private

Definition at line 142 of file transform_input_iterator.cuh.

◆ input_itr

template<typename ValueType , typename ConversionOp , typename InputIteratorT , typename OffsetT = ptrdiff_t>
InputIteratorT cub::TransformInputIterator< ValueType, ConversionOp, InputIteratorT, OffsetT >::input_itr
private

Definition at line 143 of file transform_input_iterator.cuh.


The documentation for this class was generated from the following file: