前言
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