Iterator class for sparse vector-like containers. More...
#include <dune/common/diagonalmatrix.hh>
Public Types | |
typedef ContainerWrapperIterator< CW, T, R > | DerivedType |
The type of derived iterator. | |
typedef T | Value |
The type of value accessed through the iterator. | |
typedef T * | Pointer |
The pointer to the Value. | |
typedef int | DifferenceType |
The type of the difference between two positions. | |
typedef R | Reference |
The type of the reference to the values accessed. | |
Public Member Functions | |
ContainerWrapperIterator () | |
ContainerWrapperIterator (CW containerWrapper, int position) | |
template<class OtherContainerWrapperIteratorType > | |
ContainerWrapperIterator (OtherContainerWrapperIteratorType &other) | |
ContainerWrapperIterator (const MyType &other) | |
ContainerWrapperIterator (const MyConstType &other) | |
template<class OtherContainerWrapperIteratorType > | |
ContainerWrapperIterator & | operator= (OtherContainerWrapperIteratorType &other) |
T * | operator-> () const |
bool | equals (const MyType &other) const |
bool | equals (const MyConstType &other) const |
R | dereference () const |
void | increment () |
void | decrement () |
R | elementAt (int i) const |
void | advance (int n) |
template<class OtherContainerWrapperIteratorType > | |
std::ptrdiff_t | distanceTo (OtherContainerWrapperIteratorType &other) const |
std::ptrdiff_t | index () const |
Reference | operator* () const |
Dereferencing operator. | |
DerivedType & | operator++ () |
Preincrement operator. | |
DerivedType | operator++ (int) |
Postincrement operator. | |
DerivedType & | operator-- () |
Preincrement operator. | |
DerivedType | operator-- (int) |
Postincrement operator. |
Iterator class for sparse vector-like containers.
This class provides an iterator for sparse vector like containers. It contains a ContainerWrapper that must provide the translation from the position in the underlying container to the index in the sparse container.
The ContainerWrapper must be default and copy-constructable. Furthermore it must provide the methods:
bool identical(other) - check if this is identical to other (same container, not only equal) T* pointer(position) - get pointer to data at position in underlying container size_t realIndex(position) - get index in sparse container for position in underlying container
Notice that the iterator stores a ContainerWrapper. This allows one to use proxy classes as underlying container and as returned reference type.
CW | The container wrapper class | |
T | The contained type | |
R | The reference type returned by dereference |
typedef ContainerWrapperIterator< CW, T, R > Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::DerivedType [inherited] |
The type of derived iterator.
The iterator has to define following functions have to be present:
// Access the value referred to. Reference dereference() const; // Compare for equality with j bool equals(j); // position the iterator at the next element. void increment() // position the iterator at the previous element. void decrement()
For an elaborate explanation see the STL Documentation
typedef int Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::DifferenceType [inherited] |
The type of the difference between two positions.
typedef T * Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::Pointer [inherited] |
The pointer to the Value.
typedef R Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::Reference [inherited] |
The type of the reference to the values accessed.
typedef T Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::Value [inherited] |
The type of value accessed through the iterator.
Dune::ContainerWrapperIterator< CW, T, R >::ContainerWrapperIterator | ( | ) | [inline] |
Dune::ContainerWrapperIterator< CW, T, R >::ContainerWrapperIterator | ( | CW | containerWrapper, | |
int | position | |||
) | [inline] |
Dune::ContainerWrapperIterator< CW, T, R >::ContainerWrapperIterator | ( | OtherContainerWrapperIteratorType & | other | ) | [inline] |
Dune::ContainerWrapperIterator< CW, T, R >::ContainerWrapperIterator | ( | const MyType & | other | ) | [inline] |
Dune::ContainerWrapperIterator< CW, T, R >::ContainerWrapperIterator | ( | const MyConstType & | other | ) | [inline] |
void Dune::ContainerWrapperIterator< CW, T, R >::advance | ( | int | n | ) | [inline] |
void Dune::ContainerWrapperIterator< CW, T, R >::decrement | ( | ) | [inline] |
R Dune::ContainerWrapperIterator< CW, T, R >::dereference | ( | ) | const [inline] |
std::ptrdiff_t Dune::ContainerWrapperIterator< CW, T, R >::distanceTo | ( | OtherContainerWrapperIteratorType & | other | ) | const [inline] |
R Dune::ContainerWrapperIterator< CW, T, R >::elementAt | ( | int | i | ) | const [inline] |
bool Dune::ContainerWrapperIterator< CW, T, R >::equals | ( | const MyConstType & | other | ) | const [inline] |
bool Dune::ContainerWrapperIterator< CW, T, R >::equals | ( | const MyType & | other | ) | const [inline] |
void Dune::ContainerWrapperIterator< CW, T, R >::increment | ( | ) | [inline] |
std::ptrdiff_t Dune::ContainerWrapperIterator< CW, T, R >::index | ( | ) | const [inline] |
Reference Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::operator* | ( | ) | const [inline, inherited] |
Dereferencing operator.
DerivedType Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::operator++ | ( | int | ) | [inline, inherited] |
Postincrement operator.
DerivedType& Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::operator++ | ( | ) | [inline, inherited] |
Preincrement operator.
DerivedType Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::operator-- | ( | int | ) | [inline, inherited] |
Postincrement operator.
DerivedType& Dune::BidirectionalIteratorFacade< ContainerWrapperIterator< CW, T, R > , T , R , int >::operator-- | ( | ) | [inline, inherited] |
Preincrement operator.
T* Dune::ContainerWrapperIterator< CW, T, R >::operator-> | ( | ) | const [inline] |
ContainerWrapperIterator& Dune::ContainerWrapperIterator< CW, T, R >::operator= | ( | OtherContainerWrapperIteratorType & | other | ) | [inline] |