13 Data Structures

Whenever possible you should try to use one of the data structures
available. If the data structures do not provide enough functionality
for your needs you should consider enhancing them rather than writing
something from scratch.

13.1 Vector

The vector class is defined in vector.hpp and works the
same way as the standard STL vector does except that it doesn’t
have as many constructors.

13.2 BasicList

BasicList is a simple list structure which can either be
implemented as a singly or doubly linked list. It is defined in
basic_list.hpp.

13.3 StringMap

StringMap is a associative array for strings. You should try
to use this when ever possible to avoid code bloat. It is defined in
string_map.hpp.

13.4 Hash Tables

Several hash tables are provided when StringMap is not
appropriate. These hash tables provide a hash_set,
hash_multiset, hash_map and hash_multimap which
are very similar to SGI’s STL implementation with a few exceptions.
It is defined in hash.hpp.

13.5 BlockSList

BlockSList provided a pool of nodes which can be used for
singly linked lists. It is defined in block_slist.hpp.