Class hierarchy   Compound list   Compound Members  

Hashtable Class Reference

A hashtable is a set of unique elements. More...

Inherits Container.

List of all members.

Public Members


Detailed Description

A hashtable is a set of unique elements.

Each element is identified by its hash value (see Containable) Note: In non-destructive hashtables, elements must not be deleted before they are removed from the table. All methods that accept "Data" ( except put() ) do not require the actual item (this would be rediculous) but a containable that has the same hash value as the required item.


Member Function Documentation

Hashtable::Hashtable(const unsigned flags=0)

Default Constructor: Construct an empty hash table.

Hashtable::Hashtable(const Hashtable&)

Copy Constructor: Construct a copy of a hash table.

Hashtable::Hashtable(const Container&)

Construct a hashtable from any container.

Note that only the first of any duplicate entries (according to Containable::equals()) will be added from the container.

Hashtable::Hashtable(const Enumeration&)

Construct a hashtable from an enumeration.

Hashtable::Hashtable(const Vector&)

Contruct a hashtable from from a vector.

Hashtable::~Hashtable()

Destructor.

Hashtable& Hashtable::operator=(const Hashtable&)

Assignment: Copy a hash table.

virtual int Hashtable::load(const Vector& v) [virtual]

Load this hashtable with the elements from a vector.

virtual int Hashtable::put(const Data item, const int index=-1) [virtual]

Add a data item to this hashtable.

When index == -1 (the default), if an item with the same key exists, it is replaced (and deleted if this hashtable isDestuctive()) and zero is returned; otherwise, (new key) the item is added to the hashtable and 1 is returned.

When index >= 0 and index < size(), after the item at that index is removed (and deleted if this container isDestructive()), the item is added as above. Note that this may cause another item to be removed from the table (if one with the same key exists). Returns -1 if two items are removed, otherwise 0 (no change in table size).

If index < -1 or index > size(), IndexOutOfBounds is thrown.

int Hashtable::load(const Enumeration& e)

Load this hashtable from an enumeration.

Reimplemented from Container.

virtual int Hashtable::load(Enumeration&, int temp=0) [virtual]

Load this hashtable with a non-const enumeration and optionally discard source if temp is non-zero.

Invaildates e if temp.

Reimplemented from Container.

virtual Data Hashtable::get(const Data item) const [virtual]

Retrieve a data item from this hashtable.

If an item is found in this hashtable with the same key (as determined by Containable::equals()==), it is returned; otherwise, (not found) NULL is returned.

Reimplemented from Container.

virtual Data Hashtable::get(const int index) const [virtual]

Retrieve an item by index.

Reimplemented from Container.

virtual Data Hashtable::pop() [virtual]

Pop: Get and remove an item.

Reimplemented from Container.

virtual DS_BOOL Hashtable::remove(const Data item) [virtual]

Remove an item.

item must conform to Container::get() rules. If the data item exists in this hashtable, it is removed and non-zero is returned; otherwise, (not found) zero is returned.

Reimplemented from Container.

virtual void Hashtable::remove(const int index) [virtual]

Remove an item by index.

Reimplemented from Container.

virtual DS_BOOL Hashtable::contains(const Data item) const [virtual]

Returns non-zero if the item is in this hashtable.

Reimplemented from Container.

virtual int Hashtable::size() const [virtual]

Number of elements in this hashtable.

Reimplemented from Container.

virtual void Hashtable::clear() [virtual]

Remove all elements from this hashtable.

Reimplemented from Container.

virtual Enumeration Hashtable::elements() const [virtual]

Return an enumeration of all elements in this hashtable.

This is a copy (snapshot) of the elements, so this hashtable can be modified while iterating through the enumeration.

Reimplemented from Container.


The documentation for this class was generated from the following file: