template class Poco::SimpleHashTable
Overview
A SimpleHashTable stores a key value pair that can be looked up via a hashed key. Moreā¦
#include <SimpleHashTable.h> template < class Key, class Value, class KeyHashFunction = HashFunction<Key> > class SimpleHashTable { public: // typedefs typedef std::vector<HashEntry*> HashTableVector; // classes class HashEntry; // construction SimpleHashTable(UInt32 capacity = 251); SimpleHashTable(const SimpleHashTable& ht); // methods SimpleHashTable& operator=(const SimpleHashTable& ht); void swap(SimpleHashTable& ht); void clear(); UInt32 insert( const Key& key, const Value& value ); Value& insertRaw( const Key& key, UInt32 hsh, const Value& value ); UInt32 update( const Key& key, const Value& value ); void updateRaw( const Key& key, UInt32 hsh, const Value& value ); UInt32 hash(const Key& key) const; const Value& get(const Key& key) const; const Value& getRaw( const Key& key, UInt32 hsh ) const; Value& get(const Key& key); const Value& operator[](const Key& key) const; Value& operator[](const Key& key); const Key& getKeyRaw( const Key& key, UInt32 hsh ); bool get( const Key& key, Value& v ) const; bool getRaw( const Key& key, UInt32 hsh, Value& v ) const; bool exists(const Key& key) const; bool existsRaw( const Key& key, UInt32 hsh ) const; std::size_t size() const; UInt32 capacity() const; void resize(UInt32 newSize); HashStatistic currentState(bool details = false) const; };
Detailed Documentation
A SimpleHashTable stores a key value pair that can be looked up via a hashed key.
In comparision to a HashTable, this class handles collisions by sequentially searching the next free location. This also means that the maximum size of this table is limited, i.e. if the hash table is full, it will throw an exception and that this class does not support remove operations. On the plus side it is faster than the HashTable.
This class is NOT thread safe.
Methods
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 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
const Value& get(const Key& key) const
Throws an exception if the value does not exist.
const Value& getRaw( const Key& key, UInt32 hsh ) const
Throws an exception if the value does not exist.
Value& get(const Key& key)
Throws an exception if the value does not exist.
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
bool get( const Key& key, Value& v ) const
Sets v to the found value, returns false if no value was found.
bool getRaw( const Key& key, UInt32 hsh, Value& v ) const
Sets v to the found value, returns false if no value was found.
std::size_t size() const
Returns the number of elements already inserted into the SimpleHashTable.
void resize(UInt32 newSize)
Resizes the hashtable, rehashes all existing entries. Expensive!
HashStatistic currentState(bool details = false) const
Returns the current internal state.