[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

details StridedMultiIterator< N, T, REFERENCE, POINTER > Class Template Reference VIGRA

A multi-dimensional hierarchical iterator to be used with vigra::MultiArrayView if it is not strided. More...

#include <vigra/multi_iterator.hxx>

Public Types

enum  
 
typedef StridedMultiIterator< N-1, T, REFERENCE, POINTER > base_type
 
typedef MultiArrayIndex difference_type
 
typedef StridedMultiIterator< 1, T, REFERENCE, POINTER > iterator
 
typedef multi_dimensional_traverser_tag iterator_category
 
typedef MultiArrayShape< N >::type multi_difference_type
 
typedef base_type next_type
 
typedef POINTER pointer
 
typedef REFERENCE reference
 
typedef T value_type
 

Public Member Functions

next_type begin () const
 
template<unsigned int K>
StridedMultiIterator< K+1, T, REFERENCE, POINTER > & dim ()
 
next_type end () const
 
pointer get () const
 
iterator iteratorForDimension (unsigned int d) const
 
bool operator!= (const StridedMultiIterator &rhs) const
 
reference operator* () const
 
StridedMultiIterator operator+ (difference_type n) const
 
StridedMultiIterator operator+ (multi_difference_type const &d) const
 
void operator++ ()
 
StridedMultiIterator operator++ (int)
 
StridedMultiIteratoroperator+= (difference_type n)
 
StridedMultiIteratoroperator+= (multi_difference_type const &d)
 
StridedMultiIterator operator- (difference_type n) const
 
StridedMultiIterator operator- (multi_difference_type const &d) const
 
difference_type operator- (StridedMultiIterator const &d) const
 
void operator-- ()
 
StridedMultiIterator operator-- (int)
 
StridedMultiIteratoroperator-= (difference_type n)
 
StridedMultiIteratoroperator-= (multi_difference_type const &d)
 
pointer operator-> () const
 
bool operator< (const StridedMultiIterator &rhs) const
 
bool operator<= (const StridedMultiIterator &rhs) const
 
bool operator== (const StridedMultiIterator &rhs) const
 
bool operator> (const StridedMultiIterator &rhs) const
 
bool operator>= (const StridedMultiIterator &rhs) const
 
reference operator[] (difference_type n) const
 
reference operator[] (multi_difference_type const &d) const
 
 StridedMultiIterator ()
 
 StridedMultiIterator (pointer ptr, const difference_array_type &stride, const difference_array_type &shape)
 

Public Attributes

const typedef value_typeconst_pointer
 
const typedef value_typeconst_reference
 

Detailed Description

template<unsigned int N, class T, class REFERENCE, class POINTER>
class vigra::StridedMultiIterator< N, T, REFERENCE, POINTER >

A multi-dimensional hierarchical iterator to be used with vigra::MultiArrayView if it is not strided.

See Multi-dimensional Array Iterators for further documentation.

#include <vigra/multi_iterator.hxx>
Namespace: vigra

Member Typedef Documentation

◆ base_type

typedef StridedMultiIterator<N-1, T, REFERENCE, POINTER> base_type

the type of the parent in the inheritance hierarchy.

◆ value_type

typedef T value_type

the iterator's value type

◆ reference

typedef REFERENCE reference

reference type (result of operator[])

◆ pointer

typedef POINTER pointer

pointer type

◆ multi_difference_type

multi difference type (used for offsetting along all axes simultaneously)

◆ difference_type

difference type (used for offsetting)

◆ next_type

the StridedMultiIterator for the next lower dimension.

◆ iterator

typedef StridedMultiIterator<1, T, REFERENCE, POINTER> iterator

the 1-dimensional iterator for this iterator hierarchy (result of iteratorForDimension()).

◆ iterator_category

typedef multi_dimensional_traverser_tag iterator_category

the iterator tag (image traverser)

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

the iterator's level in the dimension hierarchy

Constructor & Destructor Documentation

◆ StridedMultiIterator() [1/2]

default constructor.

◆ StridedMultiIterator() [2/2]

StridedMultiIterator ( pointer  ptr,
const difference_array_type &  stride,
const difference_array_type &  shape 
)

construct from pointer, strides (offset of a sample to the next) for every dimension, and the shape.

Member Function Documentation

◆ operator++() [1/2]

void operator++ ( )

prefix-increment the iterator in its current dimension

◆ operator--() [1/2]

void operator-- ( )

prefix-decrement the iterator in its current dimension

◆ operator++() [2/2]

StridedMultiIterator operator++ ( int  )

postfix-increment the iterator in its current dimension

◆ operator--() [2/2]

StridedMultiIterator operator-- ( int  )

postfix-decrement the iterator in its current dimension

◆ operator+=() [1/2]

increment the iterator in its current dimension by the given value.

◆ operator+=() [2/2]

StridedMultiIterator& operator+= ( multi_difference_type const &  d)

increment the iterator in all dimensions by the given offset.

◆ operator-=() [1/2]

decrement the iterator in its current dimension by the given value.

◆ operator-=() [2/2]

StridedMultiIterator& operator-= ( multi_difference_type const &  d)

decrement the iterator in all dimensions by the given offset.

◆ operator+() [1/2]

StridedMultiIterator operator+ ( difference_type  n) const

addition within current dimension

◆ operator+() [2/2]

StridedMultiIterator operator+ ( multi_difference_type const &  d) const

addition along all dimensions

◆ operator-() [1/3]

difference_type operator- ( StridedMultiIterator< N, T, REFERENCE, POINTER > const &  d) const

difference of two iterators in the current dimension. The result of this operation is undefined if the iterator doesn't point to element 0 in all dimensions below its current dimension.

◆ operator-() [2/3]

StridedMultiIterator operator- ( difference_type  n) const

subtraction within current dimension

◆ operator-() [3/3]

StridedMultiIterator operator- ( multi_difference_type const &  d) const

subtraction along all dimensions

◆ operator*()

reference operator* ( ) const

derefenrence item

◆ get()

pointer get ( ) const

get address of current item

◆ operator->()

pointer operator-> ( ) const

call method of current item

◆ operator!=()

bool operator!= ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

inequality. True if iterators reference different items.

◆ operator==()

bool operator== ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

equality. True if iterators reference the same items.

◆ operator<()

bool operator< ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

less than.

◆ operator<=()

bool operator<= ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

less or equal.

◆ operator>()

bool operator> ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

greater than.

◆ operator>=()

bool operator>= ( const StridedMultiIterator< N, T, REFERENCE, POINTER > &  rhs) const

greater or equal.

◆ operator[]() [1/2]

reference operator[] ( difference_type  n) const

access the array element at the given offset in the current dimension.

◆ operator[]() [2/2]

reference operator[] ( multi_difference_type const &  d) const

access the array element at the given offset.

◆ begin()

next_type begin ( ) const

Return the (N-1)-dimensional multi-iterator that points to the first (N-1)-dimensional subarray of the N-dimensional array this iterator is referring to. The result is only valid if this iterator refers to location 0 in all dimensions below its current dimension N, otherwise it is undefined. Usage:

StridedMultiIterator<2, int> outer = ...; // this iterator
for(; inner != outer.end(); ++inner)
{
// manipulate current 1D subimage
}

◆ end()

next_type end ( ) const

Return the (N-1)-dimensional multi-iterator that points beyond the last (N-1)-dimensional subarray of the N-dimensional array this iterator is referring to. The result is only valid if this iterator refers to location 0 in all dimensions below its current dimension N, otherwise it is undefined.

◆ iteratorForDimension()

iterator iteratorForDimension ( unsigned int  d) const

Get a 1-dimensional, STL-compatible iterator for the given dimension, pointing to the current element of this. Usage:

StridedMultiIterator<3, int> outer = ...; // this iterator
StridedMultiIterator<3, int>::iterator i = outer.iteratorForDimension(1);
for(; i != end; ++i)
{
// go down the current column starting at the location of 'outer'
}

◆ dim()

StridedMultiIterator<K+1, T, REFERENCE, POINTER>& dim ( )

Return the multi-iterator that operates on dimension K in order to manipulate this dimension directly. Usage:

StridedMultiIterator<3, int> i3 = ...;
i3.template dim<2>()++; // increment outer dimension
i3.template dim<0>()++; // increment inner dimension

For convenience, the same functionality is also available as dim0(), dim1() etc. up to dim4():

StridedMultiIterator<3, int> i3 = ...;
i3.dim2()++; // increment outer dimension
i3.dim0()++; // increment inner dimension

Member Data Documentation

◆ const_reference

const typedef value_type& const_reference

const reference type (result of operator[] const)

◆ const_pointer

const typedef value_type* const_pointer

const pointer type


The documentation for this class was generated from the following files:
vigra::StridedMultiIterator::next_type
base_type next_type
Definition: multi_iterator.hxx:1965
vigra::StridedMultiIterator::iterator
StridedMultiIterator< 1, T, REFERENCE, POINTER > iterator
Definition: multi_iterator.hxx:1970
vigra::StridedMultiIterator::end
next_type end() const
Definition: multi_iterator.hxx:2189
vigra::linalg::outer
void outer(const MultiArrayView< 2, T, C1 > &x, const MultiArrayView< 2, T, C2 > &y, MultiArrayView< 2, T, C3 > &r)
Definition: matrix.hxx:1459

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.11.1