前言
LruCache 也叫 最近最少使用缓存,在生产中经常使用到,用作内存缓存,配合redis可以实现二级缓存,提高服务器的处理性能,而在面试中,缓存是经常被问到的,如果候选人能讲出自己实现那么是很大加分项。解题思路:
采用 哈希表 + 双向链表
双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久未使用的。
哈希表即为普通的哈希映射,通过缓存数据的键映射到其在双向链表中的位置。
提示:以下是本篇文章正文内容,下面案例可供参考
一、c++ 实现简易版LruCache
主要运用数据结构:list、unordered_map
List
采用链表方式来记录数据的先后顺序:
1、当链表数据满时(缓存容量),删除队尾数据
2、放入数据时,如果数据已存在列表,那么使用splice方法将数据替换到表头
unordered_map
使用unordered_map存储k-v键值对,用于查找缓存数据
1、unordered_map底层采用哈希表结构存储,其k-v值是无序的
demo:
#include <list>
#include <unordered_map>
using namespace std;
class LruCache {
private :
//pair->first 对应map的key
//pair->second 对应map的value
list<pair<int, int>> _values;
//哈希表存储键值在链表中的位置
unordered_map<

本文探讨了如何实现LRU缓存机制,分别通过C++和Java进行讲解。C++版利用list和unordered_map,Java版则借助LinkedHashMap,详细阐述了各自的实现思路和代码示例。

2081

被折叠的 条评论
为什么被折叠?



