hashTable


template <class K, class T>
class hashTable : public unorderedSet<T>
{
 public:

  typedef Integer (*keyHash)(const K&);

  typedef bool (*keyCompare)(const K&,const T&);

  hashTable(keyHash HK=hasher,
            keyCompare KC=equality_compare,
            typeHash H=hasher,
            typeCompare C=equality_compare);

  hashTable(const hashTable<K,T>& Copy);

  hashTable<K,T>& operator=(const hashTable<K,T>& Copy);

  T& operator[](const K& Key) const;

  void* operator new(size_t s);

  void operator delete(void* p);

  operator keyCompare() const;

  operator keyHash() const;

  hashTable<K,T>& operator>>(const K& Key);

  void erase(const K& Key);

  bool exists(const K& Key) const;

  iterator find(const K& Key) const;
};