Library: Foundation
Package: Hashing
Header: Poco/HashTable.h
Deprecated. This class is deprecated and should no longer be used.
A HashTable stores a key value pair that can be looked up via a hashed key.
Collision handling is done via overflow maps(!). With small hash tables performance of this data struct will be closer to that a map than a hash table, i.e. slower. On the plus side, this class offers remove operations. Also HashTable full errors are not possible. If a fast HashTable implementation is needed and the remove operation is not required, use SimpleHashTable instead.
This class is NOT thread safe.
Member Functions: clear, currentState, exists, existsRaw, get, getKeyRaw, getRaw, hash, insert, insertRaw, maxCapacity, operator, operator =, remove, removeRaw, resize, size, update, updateRaw
typedef typename HashEntryMap::const_iterator ConstIterator;
typedef std::map < Key, Value > HashEntryMap;
typedef HashEntryMap * * HashTableVector;
typedef typename HashEntryMap::iterator Iterator;
 
 HashTable(
    UInt32 initialSize = 251
);
Creates the HashTable.
 
 HashTable(
    const HashTable & ht
);
 
 ~HashTable();
Destroys the HashTable.
 
 void clear();
 
 HashStatistic currentState(
    bool details = false
) const;
Returns the current internal state
 
 bool exists(
    const Key & key
);
 
 bool existsRaw(
    const Key & key,
    UInt32 hsh
);
 
 const Value & get(
    const Key & key
) const;
Throws an exception if the value does not exist
 
 Value & get(
    const Key & key
);
Throws an exception if the value does not exist
 
 bool get(
    const Key & key,
    Value & v
) const;
Sets v to the found value, returns false if no value was found
 
 const Key & getKeyRaw(
    const Key & key,
    UInt32 hsh
);
Throws an exception if the key does not exist. returns a reference to the internally stored key. Useful when someone does an insert and wants for performance reason only to store a pointer to the key in another collection
 
 const Value & getRaw(
    const Key & key,
    UInt32 hsh
) const;
Throws an exception if the value does not exist
 
 bool getRaw(
    const Key & key,
    UInt32 hsh,
    Value & v
) const;
Sets v to the found value, returns false if no value was found
 
 UInt32 hash(
    const Key & key
) const;
 
 UInt32 insert(
    const Key & key,
    const Value & value
);
Returns the hash value of the inserted item. Throws an exception if the entry was already inserted
 
 Value & insertRaw(
    const Key & key,
    UInt32 hsh,
    const Value & value
);
Returns the hash value of the inserted item. Throws an exception if the entry was already inserted
 
 UInt32 maxCapacity() const;
 
 const Value & operator[] (
    const Key & key
) const;
 
 Value & operator[] (
    const Key & key
);
 
 HashTable & operator = (
    const HashTable & ht
);
 
 void remove(
    const Key & key
);
 
 void removeRaw(
    const Key & key,
    UInt32 hsh
);
Performance version, allows to specify the hash value
 
 void resize(
    UInt32 newSize
);
Resizes the hashtable, rehashes all existing entries. Expensive!
 
 std::size_t size() const;
Returns the number of elements already inserted into the HashTable
 
 UInt32 update(
    const Key & key,
    const Value & value
);
Returns the hash value of the inserted item. Replaces an existing entry if it finds one
 
 void updateRaw(
    const Key & key,
    UInt32 hsh,
    const Value & value
);
Returns the hash value of the inserted item. Replaces an existing entry if it finds one