在如今的项目开发中,缓存是一种必不可少的存储方式,目前在各种后台开发中,比较常见的一种缓存算法就是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 &#