Poco

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

class SimpleHashTable

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

Description

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.

Member Summary

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

Nested Classes

class HashEntry

 more...

Types

HashTableVector

typedef HashEntry * * HashTableVector;

Constructors

SimpleHashTable inline

SimpleHashTable(
    UInt32 initialSize = 251
);

Creates the SimpleHashTable.

SimpleHashTable inline

SimpleHashTable(
    const SimpleHashTable & ht
);

Destructor

~SimpleHashTable inline

~SimpleHashTable();

Destroys the SimpleHashTable.

Member Functions

clear inline

void clear();

currentState inline

HashStatistic currentState(
    bool details = false
) const;

Returns the current internal state

exists inline

bool exists(
    const Key & key
);

existsRaw inline

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

get inline

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

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

void 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

maxCapacity inline

UInt32 maxCapacity() const;

operator = inline

SimpleHashTable & operator = (
    const SimpleHashTable & ht
);

resize inline

void resize(
    UInt32 newSize
);

Resizes the hashtable, rehashes all existing entries. Expensive!

size inline

size_t size() const;

Returns the number of elements already inserted into the SimpleHashTable

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