...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
A Vector describes common aspects of dense, packed and sparse vectors.
Value type  value_type 
The type of the vector. 
Distance type  difference_type 
A signed integral type used to represent the distance between two of the vector's iterators. 
Size type  size_type 
An unsigned integral type that can represent any nonnegative value of the vector's distance type. 
V 
A type that is a model of Vector 
v 
Objects of type V 
n, i 
Objects of a type convertible to size_type 
t 
Object of a type convertible to value_type 
In addition to the expressions defined in Vector Expression the following expressions must be valid.
Name  Expression  Type requirements  Return type 

Sizing constructor  V v (n) 
V 

Insert  v.insert (i, t) 
v is mutable. 
void 
Erase  v.erase (i) 
v is mutable. 
void 
Clear  v.clear () 
v is mutable. 
void 
Resize  v.resize (n) 
v is mutable. 
void 
Semantics of an expression is defined only where it differs from, or is not defined in Vector Expression .
Name  Expression  Precondition  Semantics  Postcondition 

Sizing constructor  V v (n) 
n >= 0 
Creates a vector of n elements. 
v.size () == n . 
Insert  v.insert (i, t) 
0 <= i < v.size () andv (i) is a copy of value_type () . 
A copy of t is inserted in v . 
v (i) is a copy of t . 
Erase  v.erase (i) 
0 <= i < v.size () 
Destroys the element v (i) and replaces it with
value_type () . 
v (i) is a copy of value_type
() . 
Clear  v.clear () 
Equivalent tofor (i = 0; i < v.size (); ++ i) v.erase (i); 

Resize  v.resize (n) 
Modifies the vector so that it can hold n
elements. 
v.size () == n . 
The runtime complexity of the sizing constructor is linear in the vector's size.
The runtime complexity of insert and erase is specific for the vector.
vector<T, A>
unit_vector<T>
zero_vector<T>
sparse_vector<T, A>
A Matrix describes common aspects of dense, packed and sparse matrices.
Value type  value_type 
The type of the matrix. 
Distance type  difference_type 
A signed integral type used to represent the distance between two of the matrix's iterators. 
Size type  size_type 
An unsigned integral type that can represent any nonnegative value of the matrix's distance type. 
M 
A type that is a model of Matrix 
m 
Objects of type M 
n1, n2, i, j 
Objects of a type convertible to size_type 
t 
Object of a type convertible to value_type 
In addition to the expressions defined in Matrix Expression the following expressions must be valid.
Name  Expression  Type requirements  Return type 

Sizing constructor  M m (n1, n2) 
M 

Insert  m.insert (i, j, t) 
m is mutable. 
void 
Erase  m.erase (i, j) 
m is mutable. 
void 
Clear  m.clear () 
m is mutable. 
void 
Resize  m.resize (n1, n2) 
m is mutable. 
void 
Semantics of an expression is defined only where it differs from, or is not defined in Matrix Expression .
Name  Expression  Precondition  Semantics  Postcondition 

Sizing constructor  M m (n1, n2) 
n1 >= 0 and n2 >= 0 
Creates a matrix of n1 rows and n2
columns. 
m.size1 () == n1 and m.size2 () ==
n2 . 
Insert  m.insert (i, j, t) 
0 <= i < m.size1 () ,0 <= j < m.size2 () and is a copy of value_type () . 
A copy of t is inserted in m . 
m (i, j) is a copy of t . 
Erase  m.erase (i, j) 
0 <= i < m.size1 () and 
Destroys the element m (i, j) and replaces it with
value_type () . 
m (i, j) is a copy of value_type
() . 
Clear  m.clear () 
Equivalent tofor (i = 0; i < m.size1 (); ++ i) for (j = 0; j < m.size2 (); ++ j) m.erase (i, j); 

Resize  m.resize (n1, n2) 
Modifies the vector so that it can hold n1 rows
and n2 columns. 
m.size1 () == n1 and m.size2 () ==
n2 . 
The runtime complexity of the sizing constructor is quadratic in the matrix's size.
The runtime complexity of insert and erase is specific for the matrix.
matrix<T, F, A>
identity_matrix<T>
zero_matrix<T>
triangular_matrix<T, F1, F2, A>
symmetric_matrix<T, F1, F2, A>
banded_matrix<T, F, A>
sparse_matrix<T, F, A>
Copyright (©) 20002002 Joerg Walter, Mathias Koch
Permission to copy, use, modify, sell and distribute this document
is granted provided this copyright notice appears in all copies.
This document is provided ``as is'' without express or implied
warranty, and with no claim as to its suitability for any
purpose.
Last revised: 1/15/2003