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

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hash算法在C++中實現高性能數據結構

發布時間:2024-11-20 09:31:33 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

在C++中實現高性能數據結構時,哈希表(Hash Table)是一種非常實用的數據結構

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

class HashTable {
public:
    HashTable(size_t size) : table(size), mutexes(size) {}

    template <typename Key, typename Value>
    bool insert(const Key& key, const Value& value) {
        size_t index = hash(key) % table.size();
        std::lock_guard<std::mutex> lock(mutexes[index]);
        auto& bucket = table[index];
        for (auto& entry : bucket) {
            if (entry.first == key) {
                entry.second = value;
                return true;
            }
        }
        bucket.emplace_back(key, value);
        return true;
    }

    template <typename Key, typename Value>
    bool find(const Key& key, Value& value) const {
        size_t index = hash(key) % table.size();
        std::lock_guard<std::mutex> lock(mutexes[index]);
        const auto& bucket = table[index];
        for (const auto& entry : bucket) {
            if (entry.first == key) {
                value = entry.second;
                return true;
            }
        }
        return false;
    }

    template <typename Key>
    bool remove(const Key& key) {
        size_t index = hash(key) % table.size();
        std::lock_guard<std::mutex> lock(mutexes[index]);
        auto& bucket = table[index];
        for (auto it = bucket.begin(); it != bucket.end(); ++it) {
            if (it->first == key) {
                bucket.erase(it);
                return true;
            }
        }
        return false;
    }

private:
    std::vector<std::list<std::pair<Key, Value>>> table;
    std::vector<std::mutex> mutexes;

    template <typename T>
    size_t hash(const T& value) const {
        std::hash<T> hasher;
        return hasher(value);
    }
};

int main() {
    HashTable ht(10);
    ht.insert("one", 1);
    ht.insert("two", 2);
    ht.insert("three", 3);

    Value value;
    if (ht.find("two", value)) {
        std::cout << "Found: " << value << std::endl;
    } else {
        std::cout << "Not found" << std::endl;
    }

    if (ht.remove("two")) {
        std::cout << "Removed 'two'" << std::endl;
    } else {
        std::cout << "'two' not found" << std::endl;
    }

    if (ht.find("two", value)) {
        std::cout << "Found: " << value << std::endl;
    } else {
        std::cout << "Not found" << std::endl;
    }

    return 0;
}

這個實現使用了std::vector來存儲桶(bucket),每個桶是一個std::list,用于存儲具有相同哈希值的鍵值對。我們還使用了std::mutex來確保在多線程環境下的線程安全。

這個簡單的實現可以根據需要進行擴展和優化,例如使用開放尋址法解決哈希沖突,或者使用更高效的哈希函數。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

南澳县| 长丰县| 琼结县| 龙里县| 常宁市| 德钦县| 三江| 息烽县| 兖州市| 宝丰县| 新安县| 宣化县| 轮台县| 临沧市| 太和县| 威信县| 滨海县| 信丰县| 璧山县| 岑巩县| 北京市| 阜平县| 东至县| 从江县| 汉沽区| 双鸭山市| 临沭县| 宁南县| 九龙县| 共和县| 阿巴嘎旗| 霍邱县| 内丘县| 科尔| 恩平市| 镇远县| 通辽市| 米泉市| 佳木斯市| 札达县| 土默特左旗|