VectorIter.h

Classes

VectorIterator -- Iterate an Vector cursor through another Array. (full description)
ReadOnlyVectorIterator -- Iterate an Vector cursor through another Array. (full description)

template<class T> class VectorIterator : public ArrayIterator<T>

Interface

Public Members
VectorIterator(Array<T> &a)
VectorIterator(const VectorIterator<T> &)
VectorIterator<T> &operator=(const VectorIterator<T> &)
Vector<T> &vector()

Description

VectorIterator steps a Vector (the "cursor") through an array. The cursor "refers" to storage in the array, so that changing the values in the cursor changes values in the original array. Like with ArrayPositionIterator, the cursor presently only moves through the array from bottom to top in the obvious way; however one may of course iterate through a slice ("array section"). This class is derived from ArrayIterator; basically it only adds the vector() member function which allows you to access the cursor as a Vector.

Tip The origin of the cursor, i.e. the subarray that moves through the larger array, is always zero.
In this example we sum all the elements of an array; of course we already have the "sum" function in ArrayMath.h that we should use instead.

    Array<Float> af;
    // set af
    VectorIterator vi(af);
    Float sum = 0.0;
    uInt n = vi.vector().nelements();
    while (! vi.pastEnd()) {
        for (Int i=0; i < n; i++) {   // N.B.; cursor always 0 based.
            sum += vi.vector()(i);
        }
        vi.next();
    }
    
Tip All ArrayIterator classes should be redone.

Member Description

VectorIterator(Array<T> &a)

Iterate by vectors through array "a".

VectorIterator(const VectorIterator<T> &)

Not implemented.

VectorIterator<T> &operator=(const VectorIterator<T> &)

Not implemented.

Vector<T> &vector()

Return a Vector at the current position.


template<class T> class ReadOnlyVectorIterator

Interface

ReadOnlyVectorIterator(const Array<T> &a) : vi((Array<T> &)a)
ReadOnlyVectorIterator(const ReadOnlyVectorIterator<T> &)
ReadOnlyVectorIterator<T> &operator=(const ReadOnlyVectorIterator<T> &)
void next()
void origin()
const Array<T> &array()
const Vector<T> &vector()
Bool atStart() const
Bool pastEnd() const
const IPosition &pos() const
uInt ndim() const
uInt dimIter() const
uInt nSteps() const

Description

ReadOnlyVectorIterator behaves exactly like VectorIterator (cf.) only it should be used on const Arrays.

Tip Note that the R/O VectorIterator is not derived from R/O ArrayIterator.

Member Description

ReadOnlyVectorIterator(const Array<T> &a) : vi((Array<T> &)a)
ReadOnlyVectorIterator(const ReadOnlyVectorIterator<T> &)
ReadOnlyVectorIterator<T> &operator=(const ReadOnlyVectorIterator<T> &)
void next()
void origin()
const Array<T> &array()
const Vector<T> &vector()
Bool atStart() const
Bool pastEnd() const
const IPosition &pos() const
uInt ndim() const
uInt dimIter() const
uInt nSteps() const