Array class

Linear data structure with random access. Similar to STL's std::vector class. The main differences are the following.

Map class

Associative container class based on an AVL tree structure. Logarithmic cost for access, insert, and delete. Similar to STL's std::map class.

Vector and Matrix classes

Linear data structures for number types with random access. Functionality as expected from linear algebra, typical operators defined.

There are also the sparse variants SparseVector and SparseMatrix built from AVL trees. Sparse and dense vectors and matrices can arbitrarily be mixed in expressions.

Set class

Ordered sets realized as AVL trees. Typical set operators defined.

There is also the Bitset class. Operands from both classes can arbitrarily mixed in expressions. Beware of collateral costs in case of too many implicit conversions though.

Incidence Matrix class

This is essentially a SparseMatrix with bool entries. Again based on AVL trees.

Graph class

Graphs are realized as adjacency lists. Similar to an IncidenceMatrix where the rows columns are indexed by the nodes. By default our graphs are undirected. There is also a directed variant. Node and edge labels of arbitrary type optional.