LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,
并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据更有可能被接下来的程序所访问。
#include <iostream>
#include <vector>
using namespace std;
int lruCountMiss(int max,int *page,int len)
{
vector<int> shuzu;
if(len<=max)
return len;
else
{
shuzu.push_back(page[0]);
int count = 1;
bool find = false;
for(int j = 0;j<len;j++)
{
for(int i = 0;i<shuzu.size();i++)
{
if(shuzu[i] == page[j])
{
shuzu.erase(shuzu.begin()+i);
shuzu.push_back(page[j]);
find = true;
}
}
if(find == false)
{
count++;
if(shuzu.size()< max)
shuzu.push_back(page[j]);
else
{
shuzu.erase(shuzu.begin());
shuzu.push_back(page[j]);
}
}
find = false;
}
return count;
}
}
int main()
{
int page[16] = {7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0};
cout<<lruCountMiss(3,page,16)<<endl;
return 0;
}