亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何在C++中實現Hashtable

c++
小樊
84
2024-07-21 03:24:56
欄目: 編程語言

在C++中實現Hashtable可以使用標準庫中的unordered_map或者自己實現一個Hashtable類。以下是一個簡單的自定義Hashtable類的實現示例:

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

class Hashtable {
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:
    Hashtable() {
        table.resize(TABLE_SIZE);
    }

    void insert(int key, int value) {
        int index = hashFunction(key);
        for (auto& pair : table[index]) {
            if (pair.first == key) {
                pair.second = value;
                return;
            }
        }
        table[index].push_back({key, value});
    }

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

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

int main() {
    Hashtable ht;
    
    ht.insert(1, 10);
    ht.insert(2, 20);
    
    std::cout << ht.get(1) << std::endl; // Output: 10
    std::cout << ht.get(2) << std::endl; // Output: 20
    
    ht.remove(1);
    
    std::cout << ht.get(1) << std::endl; // Output: -1 (key not found)

    return 0;
}

在這個例子中,我們使用一個vector來存儲鏈表,每個鏈表存儲具有相同hash值的鍵值對。我們實現了插入、刪除和獲取操作。實際上,C++標準庫中的unordered_map就是使用類似的哈希表實現的。

0
聂荣县| 唐山市| 钟祥市| 库车县| 收藏| 砀山县| 光山县| 丹棱县| 和政县| 南郑县| 望谟县| 宜春市| 乌拉特前旗| 秦皇岛市| 吉安县| 大港区| 庄浪县| 大埔县| 化隆| 甘孜县| 盘山县| 信阳市| 治多县| 霞浦县| 临沧市| 阿图什市| 临泉县| 进贤县| 渝北区| 恭城| 石楼县| 舒兰市| 衢州市| 井冈山市| 广宁县| 乌兰县| 广南县| 辰溪县| 枝江市| 阳西县| 曲沃县|