C++实现LRU(最久未使用)缓存算法

本文介绍如何使用C++实现LRU缓存算法,结合链表和哈希表,利用空间换时间思想,高效处理插入、删除和查找操作。通过学习此实现,可以深入了解LRU算法和优化编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法,本文将用C++实现一个LRU算法。

LRU算法实现并不难,但是要高效地实现却是有难度的,要想高效实现其中的插入、删除、查找,第一想法就是红黑树,但是红黑树也是一种折中的办法。插入、删除效率最高当属链表,查找效率当属hash。所以,这里我们就将链表和hash结合起来,利用空间换时间的思想,实现LRU算法。

LRU具体概念就不列出了,本文的目的是进一步了解LRU算法和学习高效的编程方法。

代码如下:

class LRUCache{
private:
	//LRU数据结构
	struct Node{
		int key;
		int value;
		Node(int k,int v):key(k),value(v){}
	};
public:
	LRUCache(int c):capacity(c) {}
	
	int get(int key){
		if (cacheMap.find(key) == cacheMap.end())
			return -1; //这里产生缺页中断,根据页表将页面调入内存,然后set(key, value)
		//将key移到第一个,并更新cacheMap 
		cacheList.splice(cacheList.begin(),cacheList,cacheMap[key]);
		cacheMap[key] = cach
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值