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

溫馨提示×

溫馨提示×

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

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

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

安达市| 柳州市| 墨玉县| 乌拉特后旗| 平顺县| 曲麻莱县| 夏邑县| 滁州市| 大同县| 新龙县| 静安区| 广水市| 扶风县| 山阴县| 天等县| 理塘县| 黎城县| 巴林左旗| 淮北市| 新安县| 海丰县| 玛多县| 准格尔旗| 西丰县| 静海县| 精河县| 吉木乃县| 宝鸡市| 社旗县| 吴川市| 昌图县| 阿勒泰市| 和政县| 新昌县| 体育| 德州市| 志丹县| 仙游县| 澄迈县| 灵川县| 马关县|