哈希表的意义在于保证一定存储规模的情况下实现快速寻址。这对于自然界的大部分数据是极有意义的。传统的哈希表碰撞的处理方式:开放地址法和链接法,本文是开放地址法。
.h 文件
#include <cassert>
#include <iostream>
template<typename K, typename E = int>
class CHashTable{
private:
// members;
bool* m_pEmpty;
E* m_pArray;
size_t m_nSize;
public:
// constructors;
CHashTable(size_t size = 100);
~CHashTable();
// methods;
CHashTable& mInsert(const K& key, const E& elem);
bool mFind(const K& key, const E& elem);
private:
int _mHashFunc(const K& key);
};
template<typename K, typename E>
CHashTable<K,E>::CHashTable(size_t size):
m_nSize(size){
// initialize the m_pEmpty
assert(m_nSize > 0);
m_pEmpty = new bool[size];
for(int i = 0; i < size; i ++)
m_pEmpty[i] = true;
m_pArray = new E[size];
}
template<typename K, typename E>