template class axl::sl::HashTable
#include <axl_sl_HashTable.h>
template <
typename Key,
typename Value,
typename Hash,
typename Eq = Eq<Key>,
typename KeyArg = typename ArgType<Key>::Type,
typename ValueArg = typename ArgType<Value>::Type
>
class HashTable
{
public:
// typedefs
typedef HashTableEntry<Key, Value> Entry;
typedef sl::Iterator<Entry> Iterator;
typedef sl::ConstIterator<Entry> ConstIterator;
typedef Entry::Bucket Bucket;
// enums
enum Def;
// construction
HashTable(
const Hash& hash = Hash(),
const Eq& eq = Eq()
);
// methods
Value&
operator[](KeyArg key);
void
clear();
bool
isEmpty() const;
Iterator
getHead();
ConstIterator
getHead() const;
Iterator
getTail();
ConstIterator
getTail() const;
size_t
getCount() const;
size_t
getBucketCount() const;
bool
setBucketCount(size_t bucketCount);
size_t
getResizeThreshold() const;
void
setResizeThreshold(size_t resizeThreshold);
Iterator
find(KeyArg key);
ConstIterator
find(KeyArg key) const;
Value
findValue(
KeyArg key,
ValueArg undefinedValue
) const;
Iterator
visit(KeyArg key);
Iterator
add(
KeyArg key,
ValueArg value,
bool* isNew = NULL
);
Iterator
addIfNotExists(
KeyArg key,
ValueArg value
);
void
erase(Iterator it);
bool
eraseKey(KeyArg key);
bool
sortByKey();
template <typename Compare>
bool
sortByKey(Compare compare);
bool
sortByValue();
template <typename Compare>
bool
sortByValue(Compare compare);
};