Vector Programmers Guide Contents | Index |  Search

Category:containers Component type:concept
Description
Not to be confused with the std::vector class. The MTL Vector concept is a Container in which every element has a corresponding index. The elements do not have to be sorted by their index, and the indices do not necessarily have to start at 0. Also the indices do not have to form a contiguous range. The iterator type must be a model of IndexedIterator. Vector is not a refinement of RandomAccessContainer (even though Vector defines operator[]) because Vector does not guarantee amortized constant time for that operation (to allow fo sparse vectors). Note also that the invariant a[n] == advance(A.begin(), n) that applies to RandomAccessContainer does not apply to Vector, since the a[i] is defined for Vector to return the element with the ith index. So a[n] == *i if and only if i.index() == n. The indices of the elements in the subrange remain the same. For example, here is a vector written in terms of index-value pairs: x = [ (0,2), (1,5), (2,3), (3,1), (4,9) ] The subrange [1,3) of x can be obtained with y = x(1,3) which results in y = [ (1,5), (2,3) ] The subrange vector is a reference to a particular portion of the original vector. If you wish to have the subrange vector's starting index to be zero just do the following: y = x(1,3).adjust_index(-1); The adjust_index(delta) function does not affect the indexing of the original vector.
Refinement of
Associated types
Concept Type name Description
IndexedIterator X::iterator
const IndexedIterator X::const_iterator
Tag X::dimension Marks this as 1-D
Tag X::sparsity dense_tag or sparse_tag
const Vector X::scaled_type The vector scaled be a constant
size_type X::N the static size, 0 if dynamic
const Container X::IndexArray An array containing the indices of the elements in the vector.
Vector X::subrange_type The sub-vector type
const Vector X::const_subrange_type The const sub-vector type
Notations

 X The type of a model of Vector a An object of type X splits A container of integral objects
Definitions
Expression semantics
Description Expression Semantics
Element access a[n]
Const element access a[n]
Subrange access a(s,f)
Subrange access a[r]
Number of non-zero elements (actually the number of stored elements) a.nnz()