C++实现LRU缓存策略思路+代码

实现LRU缓存策略LRU缓存策略实现思路分析实现代码C++解法(list+unordered_map)LRU缓存策略英文全称Least Recently Used,是页面置换算法的一种,即淘汰掉最长时间不使用的页面。实现思路分析设计put和get方法,实现O(1)时间的查找插入删除,应该用散列表;但散列表是无序的,要实现有序性,应该用链表结构。因此,一个哈希链表的结构符合我们的要求。实现...
摘要由CSDN通过智能技术生成

LRU缓存策略

英文全称Least Recently Used,是页面置换算法的一种,即淘汰掉最长时间不使用的页面。在缓存中,是一种缓存淘汰策略,优先删除很久没有用过的数据。

实现思路分析

设计putget方法,实现O(1)时间的查找插入删除,应该用散列表;但散列表是无序的,要实现有序性,应该用链表结构。因此,一个哈希链表的结构符合我们的要求。

实现代码

题目来源:LeetCode 146
解法来源:LeetCode用户 labuladong

  • 所需的数据结构(双向链表)
//双向链表
struct Node{
   
	size_t  key, val;
	Node* next;
	Node* pre;
	Node(size_t k, size_t v): key(k), val(v), next(nullptr), pre(nullptr) {
   }	
};
  • 双向链表需要的一些接口函数
class DoubleList{
   
private:
	Node head, tail;  //头尾哨兵节点
	size_t  size;  //链表长度
public:
	//新建双向链表
	DoubleList(){
   
		head = new Node(0,0);
		tail = new Node(0,0);
		head->next = tail;
		tail->pre = head;
		size = 0;
	}
	//在头部添加节点
	void addToHead(Node n){
   
		Node* temp = head->next;
		n-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值