Vector [MTL Home] 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

XThe type of a model of Vector
aAn object of type X
splitsA 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()  
Adjust the indices of the elements by delta x.adjust_index(delta);  
Function specification
Name Function Complexity
Element access reference operator[](size_type n) linear time
Const element access const_reference operator[](size_type n) linear time
Subrange access subrange operator()(size_type start, size_type finish) linear time
Subrange access subrange operator()(range_type r) linear time
Number of non-zero elements (actually the number of stored elements) size_type nnz() constant time
Adjust the indices of the elements by delta self adjust_index(size_type delta) constant time
Invariants
a.nnz() <= a.size()
Models
Notes
See also

[MTL Home] Copyright © 1998,1999 University of Notre Dame. All Rights Reserved.