LRU缓存算法c++实现

本文介绍了LRU缓存算法的基本原理,并通过C++代码展示了其实现过程,利用map保持O(1)查找效率,用双向链表处理淘汰逻辑。当缓存满时,会删除最近最少使用的数据。提供的测试案例验证了算法的正确性,有助于理解和学习LRU及C++内存管理。
摘要由CSDN通过智能技术生成

    在如今的项目开发中,缓存是一种必不可少的存储方式,目前在各种后台开发中,比较常见的一种缓存算法就是LRU了,LRU名为最近最少使用算法。它会将最近不常用的缓存数据淘汰掉,是一种Cache替换算法。

     本文通过c++简单的实现这种算法,代码不长,但能很好的体现这种思想

     思路:  map  存储数据 ,实现查找效率O(1),双向链表实现算法逻辑
     算法逻辑: 1.新数据会插入到链表头部
                         2.当缓存数据被访问,将该缓存数据移到链表头部
                         3.当新数据插入时达到缓存上限了,将尾部数据删除掉(也就是最近最少使用的),新数据放在头部。

     直接上代码:
 

//********************
//**Filename:LRUCache.h
//**Discribe: LRUCache实现文件:双向链表+map
//**Date: 2018.7.26
//**@author: Mr.xiong
//*****
#include<iostream>
#include<map>  
using namespace std;


//** 链表节点结构体

struct ListNode
{
	int m_key;                //key,value 形式方便map存储。
	int m_value;
	ListNode* pPre;
	ListNode* pNext;
	
	ListNode(int key ,int value)
	{
		m_key &#
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值