Hash_map()類

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的正整數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章