LTL  2.0.x
Classes | Typedefs | Enumerations
MArray iterators

Classes

class  ltl::MArrayIterConst< T, N >
 
class  ltl::MArrayIter< T, N >
 

Typedefs

typedef std::forward_iterator_tag ltl::MArrayIterConst< T, N >::iterator_category
 std::iterator typedefs More...
 
typedef int ltl::MArrayIterConst< T, N >::difference_type
 
typedef MArray< T, N >::value_type ltl::MArrayIterConst< T, N >::value_type
 
typedef MArray< T, N >
::const_reference 
ltl::MArrayIterConst< T, N >::const_reference
 
typedef MArray< T, N >
::const_pointer 
ltl::MArrayIterConst< T, N >::const_pointer
 
typedef MArray< T, N >::reference ltl::MArrayIterConst< T, N >::reference
 
typedef MArray< T, N >::pointer ltl::MArrayIterConst< T, N >::pointer
 

Enumerations

enum  { ltl::MArrayIterConst< T, N >::dims =N }
 These define constants that are used by the expression template engine. More...
 
enum  { ltl::MArrayIterConst< T, N >::numIndexIter = 0 }
 
enum  { ltl::MArrayIterConst< T, N >::numConvolution = 0 }
 
enum  { ltl::MArrayIterConst< T, N >::isVectorizable = 1 }
 

Detailed Description

Iterators are "generalized pointers" to the elements of an array of arbitrary geometry, providing two operations, namely dereferencing via operator* (returning the value of the element currently pointed to or a reference to it for use on the rhs) and moving the "pointer" to the next element via operator++. In addition, these classes provide the necessary infrastructure to efficiently loop over arbitrary array geometries. This is used by the expression template engine and the vectorizer.

As a neat extra feature, the iterators are compatible with those known from the Standard Template Library (STL). So you can use the STL algorithms on MArrays. The only thing to know here is that the standard iterators in the LTL are only models of forward_iterators.

We provide a second set of iterators which are true random_access_iterators, but only under the precondition that the associated ltl::MArray object has a contiguous memory layout (which is always true for newly allocated arrays and for suitable subarrays or slices). The random-access iterators are then simply pointers to the array's data, aka objects of type T*. These are obtained by calling MArray::beginRA() and MArray::endRA().

Typedef Documentation

template<typename T, int N>
typedef std::forward_iterator_tag ltl::MArrayIterConst< T, N >::iterator_category

std::iterator typedefs

template<typename T, int N>
typedef int ltl::MArrayIterConst< T, N >::difference_type
template<typename T, int N>
typedef MArray<T,N>::value_type ltl::MArrayIterConst< T, N >::value_type
template<typename T, int N>
typedef MArray<T,N>::const_reference ltl::MArrayIterConst< T, N >::const_reference
template<typename T, int N>
typedef MArray<T,N>::const_pointer ltl::MArrayIterConst< T, N >::const_pointer
template<typename T, int N>
typedef MArray<T,N>::reference ltl::MArrayIterConst< T, N >::reference
template<typename T, int N>
typedef MArray<T,N>::pointer ltl::MArrayIterConst< T, N >::pointer

Enumeration Type Documentation

template<typename T, int N>
anonymous enum

These define constants that are used by the expression template engine.

Enumerator
dims 
template<typename T, int N>
anonymous enum
Enumerator
numIndexIter 
template<typename T, int N>
anonymous enum
Enumerator
numConvolution 
template<typename T, int N>
anonymous enum
Enumerator
isVectorizable