FDB_Hash_map.h
類的聲明與作用
哈希數據結構的真正實現的類
類開發的必要性,唯一性
向對於僞哈希,真正的哈希在數據量大的情況下可以更快的進行操作
類中各函數的複雜度,可能瓶頸
Hash_map();O(1)
Hash_map(Hash_map_pseudo<T> rhs);O(N)
void Hash_map_add(Hash_node_pseudo<T> rhs); O(1)
void Hash_map_del(Hash_node_pseudo<T> rhs);O(1)
void Hash_map_rehash(); O(N)
void Hash_map_change(Hash_node_pseudo<T> rhs); O(1)
void Hash_map_destory();O(1)
void Hash_map_show();O(N)
bool Hash_map_find(Hash_node_pseudo<T> rhs);O(1)
T Hash_map_value(String rhs); O(1)
類的聲明與定義
template <typename T>
class Hash_map
{
private:
unsigned long used; //鍵值對保存在hash表中的大小
unsigned long size; //hash表的大小
std::vector<std::list<Hash_node_pseudo<T>>> hash; //hash表的實現
unsigned long reused; //鍵值對保存在rehash表中的大小
unsigned long resize; //rehash表的大小
std::vector<std::list<Hash_node_pseudo<T>>> rehash; //rehash表的實現
int rehashhidx; //標誌rehash是否使用(-1的代表未使用)
public:
Hash_map(); //初始化空哈希表
Hash_map(Hash_map_pseudo<T> rhs); //由僞哈希表向哈希表的轉換(包括其內鍵值對的移動)
void Hash_map_add(Hash_node_pseudo<T> rhs); //向哈希表添加鍵值對
void Hash_map_del(Hash_node_pseudo<T> rhs); //刪除哈希表中的鍵值對rhs
//由hash向rehash漸近式哈希的遷移,包括當hash表遷移完所有後將用rehash代替hash,並將新的rehash置空
void Hash_map_rehash();
void Hash_map_change(Hash_node_pseudo<T> rhs); //將與rhs鍵值對的鍵相等的鍵值對替換爲rhs
void Hash_map_destory(); //清空哈希表,並再次初始化它
void Hash_map_show(); //測試函數,打印哈希表的數據
bool Hash_map_find(Hash_node_pseudo<T> rhs); //測試rhs鍵值對是否存在在哈希表中
T Hash_map_value(String rhs); //返回哈希表中鍵位rhs的鍵值對的值
unsigned int GetKey_char(const void *key); //hash函數
unsigned int GetKey_int(unsigned int key); //hash函數
};
類成員函數接口說明
1.接口:Hash_map();
功能:初始化空哈希表
參數:無參數
2.接口:Hash_map(Hash_map_pseudo<T> rhs);
功能:由僞哈希表向哈希表的轉換(包括其內鍵值對的移動)
參數:需要轉換的僞哈希。
3.接口:void Hash_map_add(Hash_node_pseudo<T> rhs);
功能:向哈希表添加鍵值對
參數:需要添加的鍵值對
4.接口:void Hash_map_del(Hash_node_pseudo<T> rhs);
功能:刪除哈希表中的鍵值對rhs
參數:需要刪除的鍵值對
5.接口:void Hash_map_rehash();
功能:由hash向rehash漸近式哈希的遷移,包括當hash表遷移完所有後將用rehash代替hash,並將新的rehash置空
參數:無參數
6.接口:void Hash_map_change(Hash_node_pseudo<T> rhs);
功能:將與rhs鍵值對的鍵相等的鍵值對替換爲rhs
參數:見功能
7.接口:void Hash_map_destory();
功能:清空哈希表,並再次初始化它
參數:無參數
8.接口:void Hash_map_show();
功能:測試函數,打印哈希表的數據
參數:無參數
9.接口:bool Hash_map_find(Hash_node_pseudo<T> rhs);
功能:測試rhs鍵值對是否存在在哈希表中
參數:見功能
10.接口:T Hash_map_value(String rhs);
功能:返回哈希表中鍵位rhs的鍵值對的值
參數:見功能
11.接口:unsigned int GetKey_char(const void *key);
功能:hash函數
參數:需要進行hash的字符串
12.接口:unsigned int GetKey_int(unsigned int key);
功能:hash函數
參數:需要進行hash的正整數