c++ - 优先队列和映射

标签 c++ stl queue lru

我在我的程序中做 LRU 缓存。 我有:

class DiadocCache : public IDiadocCache<K,T>
        {
        private:
             std::map<K, CacheEntry<T>> values_;
             std::priority_queue<?> timeQueue_;
        }

优先级 - 在我的例子中是按键的点击次数。

我将项目放在 std::map 中,如下所示: values_.insert(std::make_pair(key, CacheEntry(value)));

如何在 priority_queue 中添加元素? 创建优先级队列时必须指定哪些类型? std::priority_queue<?>

最佳答案

您当前的 DS 无法实现 LRU。您应该使用 DLL 对每个元素进行哈希处理。您可以将 list 与 unordered_hash 或 map 一起使用。 在当前的实现中,您无法更新 priority_queue 的数据。

关于c++ - 优先队列和映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541063/

相关文章:

c++ - 标准库 to_string(double) 在 vs2015 中给出了错误的值。有什么解决办法吗?

java - 如何仅使用后部外部指针使这个链接队列循环?

c++ - 为什么这个 std::vector::emplace_back 失败?

php - C++ 从 http 下载二进制文件

c++ - 如何在两个不同类之间重载 '==' 运算符?

c# - 在 C++ 中将 std::string 用于非托管 C# dll

c++ - 初始化具有大小的对象 vector 时出错

c# - 有没有更好的方法来等待排队的线程?

laravel - 队列上的连接名称

c++ - 将 std::string 移动到函数参数