Poco

template < class Key, class Value, class KeyHashFunction = HashFunction < Key >>

class SimpleHashTable

Library: Foundation
Package: Hashing
Header: Poco/SimpleHashTable.h

Description

A SimpleHashTable stores a key value pair that can be looked up via a hashed key.

In comparison 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.

Member Summary

Member Functions: capacity, clear, currentState, exists, existsRaw, get, getKeyRaw, getRaw, hash, insert, insertRaw, operator =, operator [], resize, size, swap, update, updateRaw

Nested Classes

class HashEntry

 more...

Types

HashTableVector

typedef std::vector < HashEntry * > HashTableVector;

Constructors

SimpleHashTable inline

SimpleHashTable(
    UInt32 capacity = 251
);

Creates the SimpleHashTable.

SimpleHashTable inline

SimpleHashTable(
    const SimpleHashTable & ht
);

Destructor

~SimpleHashTable inline

~SimpleHashTable();

Destroys the SimpleHashTable.

Member Functions

capacity inline

UInt32 capacity() const;

clear inline

void clear();

currentState inline

HashStatistic currentState(
    bool details = false
) const;

Returns the current internal state

exists inline

bool exists(
    const Key & key
) const;

existsRaw inline

bool existsRaw(
    const Key & key,
    UInt32 hsh
) const;

get inline

const Value & get(
    const Key & key
) const;

Throws an exception if the value does not exist

get inline

Value & get(
    const Key & key
);

Throws an exception if the value does not exist

get inline

bool get(
    const Key & key,
    Value & v
) const;

Sets v to the found value, returns false if no value was found

getKeyRaw inline

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

getRaw inline

const Value & getRaw(
    const Key & key,
    UInt32 hsh
) const;

Throws an exception if the value does not exist

getRaw inline

bool getRaw(
    const Key & key,
    UInt32 hsh,
    Value & v
) const;

Sets v to the found value, returns false if no value was found

hash inline

UInt32 hash(
    const Key & key
) const;

insert inline

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

insertRaw inline

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

operator = inline

SimpleHashTable & operator = (
    const SimpleHashTable & ht
);

operator [] inline

const Value & operator[] (
    const Key & key
) const;

operator [] inline

Value & operator[] (
    const Key & key
);

resize inline

void resize(
    UInt32 newSize
);

Resizes the hashtable, rehashes all existing entries. Expensive!

size inline

std::size_t size() const;

Returns the number of elements already inserted into the SimpleHashTable

swap inline

void swap(
    SimpleHashTable & ht
) noexcept;

update inline

UInt32 update(
    const Key & key,
    const Value & value
);

Returns the hash value of the inserted item. Replaces an existing entry if it finds one

updateRaw inline

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