1、简介
在我负责的项目中,有很多公共的组件,实现的思路很值得我们学习。比如LRU缓存,这种策略在操作系统中也有应用。本次是基于C++实现的一个支持泛型的LRU缓存工具类,实现思路供大家参考。
LRU算法(Least Recently Used,最近最少使用),是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。
2、实现LRU缓存
首先看一下LRUCache类的定义如下:
思路主要是借助map和list来实现一个LRU缓存的实现,其中map用于快速查找,list用于顺序存储。map的key为数据的key,Value为list的元素指针。List中也存放具体的元素key-Value值。其中分别实现的函数主要包括有参构造函数,析构函数,put和get方法,以及返回整个LRU缓存的数据get_list方法。
先看看构造函数和析构函数的实现,其中构造函数为有参数构造。参数cap代表了LRU缓存的容量。当存放的数据多于cap,则会剔除最老的数据。