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.

Construction

SimpleHashTable(UInt32 capacity = 251)

Creates the SimpleHashTable.

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.