91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C++中實現自定義HashMap

c++
小樊
82
2024-08-02 18:18:23
欄目: 編程語言

要在C++中實現自定義HashMap,可以按照以下步驟進行:

  1. 創建一個哈希表類,定義哈希表的數據結構和相關方法。哈希表類通常包含一個數組作為存儲桶,每個存儲桶可以存儲多個鍵值對。還需要定義哈希函數來計算鍵的哈希值,并且定義解決哈希沖突的方法(如鏈地址法或開放尋址法)。

  2. 實現哈希函數。哈希函數負責將鍵映射到存儲桶的索引,通常使用除留余數法或乘法哈希等方法來計算哈希值。

  3. 實現存儲桶結構。存儲桶通常包含一個鏈表或者數組,用于存儲鍵值對。在處理哈希沖突時,可以將新的鍵值對插入到存儲桶中。

  4. 實現插入、查找和刪除操作。在哈希表類中定義插入、查找和刪除方法,以便用戶可以對哈希表進行操作。

  5. 測試哈希表。編寫測試用例對實現的哈希表進行測試,確保其功能正確并且性能良好。

下面是一個簡單的示例代碼,演示了如何實現一個自定義的哈希表:

#include <iostream>
#include <vector>
#include <list>

class HashMap {
private:
    static const int TABLE_SIZE = 10;
    std::vector<std::list<std::pair<int, int>>> table;

    int hashFunction(int key) {
        return key % TABLE_SIZE;
    }

public:
    HashMap() : table(TABLE_SIZE) {}

    void insert(int key, int value) {
        int index = hashFunction(key);
        table[index].push_back(std::make_pair(key, value));
    }

    int get(int key) {
        int index = hashFunction(key);
        for (auto& pair : table[index]) {
            if (pair.first == key) {
                return pair.second;
            }
        }
        return -1;
    }

    void remove(int key) {
        int index = hashFunction(key);
        table[index].remove_if([key](const std::pair<int, int>& pair) { return pair.first == key; });
    }
};

int main() {
    HashMap map;
    
    map.insert(1, 10);
    map.insert(2, 20);
    map.insert(11, 30);
    
    std::cout << "Value for key 1: " << map.get(1) << std::endl;
    std::cout << "Value for key 2: " << map.get(2) << std::endl;
    std::cout << "Value for key 11: " << map.get(11) << std::endl;
    
    map.remove(2);
    std::cout << "Value for key 2 after removal: " << map.get(2) << std::endl;
    
    return 0;
}

在這個示例中,我們定義了一個HashMap類,使用一個std::vector來存儲存儲桶,每個存儲桶是一個std::list,用于存儲鍵值對。哈希函數采用了簡單的除余法,插入、查找和刪除操作分別對應insertgetremove方法。通過這個簡單的示例,你可以進一步擴展和優化自定義的哈希表類。

0
延寿县| 漳浦县| 株洲市| 怀集县| 和政县| 库车县| 嘉禾县| 杨浦区| 榕江县| 濮阳市| 同仁县| 焦作市| 隆德县| 靖江市| 武穴市| 西乌| 五台县| 沁阳市| 梁平县| 托里县| 方正县| 滨州市| 阳春市| 泸溪县| 仁寿县| 即墨市| 洛阳市| 交口县| 甘肃省| 静海县| 尼木县| 都江堰市| 信宜市| 靖江市| 达日县| 苍山县| 邢台市| 温泉县| 光泽县| 景泰县| 绩溪县|