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

溫馨提示×

設計一個基于紅黑樹的C++通用緩存系統

c++
小樊
84
2024-04-26 19:43:00
欄目: 編程語言

紅黑樹是一種自平衡的二叉搜索樹,可以用于實現高效的查找、插入和刪除操作。結合紅黑樹和緩存系統可以實現高效的數據存儲和檢索。下面是一個基于紅黑樹的C++通用緩存系統的簡單實現:

#include <iostream>
#include <map>
#include <list>

template <typename K, typename V>
class LRUCache {
private:
    int capacity;
    std::map<K, std::pair<V, typename std::list<K>::iterator>> cacheMap;
    std::list<K> lruList;

public:
    LRUCache(int capacity) : capacity(capacity) {}

    V get(K key) {
        if (cacheMap.find(key) == cacheMap.end()) {
            return V();
        }

        // 更新LRU順序
        lruList.erase(cacheMap[key].second);
        lruList.push_front(key);
        cacheMap[key].second = lruList.begin();

        return cacheMap[key].first;
    }

    void put(K key, V value) {
        if (cacheMap.find(key) != cacheMap.end()) {
            lruList.erase(cacheMap[key].second);
        } else if (cacheMap.size() >= capacity) {
            cacheMap.erase(lruList.back());
            lruList.pop_back();
        }

        lruList.push_front(key);
        cacheMap[key] = {value, lruList.begin()};
    }
};

int main() {
    LRUCache<int, std::string> cache(2);

    cache.put(1, "Hello");
    cache.put(2, "World");

    std::cout << cache.get(1) << std::endl; // Output: Hello

    cache.put(3, "Hi");

    std::cout << cache.get(2) << std::endl; // Output: World (被移除)
    std::cout << cache.get(3) << std::endl; // Output: Hi

    return 0;
}

在以上代碼中,我們定義了一個LRUCache類,其中使用std::map作為緩存存儲數據,使用std::list作為LRU鏈表用于維護最近訪問順序。LRUCache類提供了get和put兩個方法,分別用于獲取和存儲數據。同時使用紅黑樹的特性,保證了數據的快速查找和LRU緩存的實現。

這是一個簡單的示例代碼,實際中可以根據具體需求進一步完善和優化。

0
滁州市| 巴林右旗| 穆棱市| 乐东| 平阳县| 仙居县| 建宁县| 沾化县| 泸西县| 子长县| 桂阳县| 九寨沟县| 密山市| 西盟| 玉田县| 仁布县| 马龙县| 大竹县| 兴化市| 久治县| 平邑县| 柞水县| 孝感市| 武强县| 宣汉县| 泾川县| 扎囊县| 集贤县| 新干县| 古蔺县| 儋州市| 会宁县| 辽宁省| 望江县| 车险| 泸西县| 灌阳县| 夏邑县| 临颍县| 饶河县| 昆明市|