thrust
Public Types | Public Member Functions | List of all members
thrust::iterator_facade< Derived, Value, System, Traversal, Reference, Difference > Class Template Reference

#include <thrust/iterator/iterator_facade.h>

Public Types

typedef thrust::detail::remove_const< Value >::type value_type
 
typedef Reference reference
 
typedef void pointer
 
typedef Difference difference_type
 
typedef thrust::detail::iterator_facade_category< System, Traversal, Value, Reference >::type iterator_category
 

Public Member Functions

__host__ __device__ reference operator* () const
 
__host__ __device__ reference operator[] (difference_type n) const
 
__host__ __device__ Derived & operator++ ()
 
__host__ __device__ Derived operator++ (int)
 
__host__ __device__ Derived & operator-- ()
 
__host__ __device__ Derived operator-- (int)
 
__host__ __device__ Derived & operator+= (difference_type n)
 
__host__ __device__ Derived & operator-= (difference_type n)
 
__host__ __device__ Derived operator- (difference_type n) const
 

Detailed Description

template<typename Derived, typename Value, typename System, typename Traversal, typename Reference, typename Difference = std::ptrdiff_t>
class thrust::iterator_facade< Derived, Value, System, Traversal, Reference, Difference >

iterator_facade is a template which allows the programmer to define a novel iterator with a standards-conforming interface which Thrust can use to reason about algorithm acceleration opportunities.

Because most of a standard iterator's interface is defined in terms of a small set of core primitives, iterator_facade defines the non-primitive portion mechanically. In principle a novel iterator could explicitly provide the entire interface in an ad hoc fashion but doing so might be tedious and prone to subtle errors.

Often iterator_facade is too primitive a tool to use for defining novel iterators. In these cases, iterator_adaptor or a specific fancy iterator should be used instead.

iterator_facade's functionality is derived from and generally equivalent to boost::iterator_facade. The exception is Thrust's addition of the template parameter System, which is necessary to allow Thrust to dispatch an algorithm to one of several parallel backend systems. An additional exception is Thrust's omission of the operator-> member function.

Interested users may refer to boost::iterator_facade's documentation for usage examples.

Note
iterator_facade's arithmetic operator free functions exist with the usual meanings but are omitted here for brevity.

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