LRU主要包含两个函数,第一个插入一个页面,第二个获得一个页面
主要思路如下,当插入页面的时候,所有的页面向后移动一个单位(若果多出来一个元素舍弃掉),然后把这个页面放到数组首元素
当获得一个页面的时候,就便利数组,找到这个页面然后放到最前面
代码如下:
//页面
struct page
{
int id;
//...其他信息
page(int _id) : id(_id) {
}
};
//LRU类
class Array_LRUCache {
private:
vector<page*> ap;
int length;
int _capacity;
private:
void copy(int dst,int src,int len) //目标地址,原地址,复制的长度
{
//原地址小于目标地址的时候从后往前复制
//原地址大于目标地址的时候从前往后复制
if (src <= dst)
{
int i = src + len - 1;
int j = dst + len - 1;
while (i >= src)
{
ap