|
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 |
|
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().
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>
These define constants that are used by the expression template engine.
template<typename T, int N>
template<typename T, int N>
template<typename T, int N>