#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
//先进先出算法,使用队列模拟置换过程
bool Find(queue<int> page, int number) //寻找队列中是否有值跟number相同的元素
{
bool flag = true;
for(int i = 0; i < int(page.size()); i++)
{ if(number != page.front())
{
page.push(page.front());
page.pop();
}
else
{
flag = false;
}
}
return flag;
}
void Show(queue<int>page)//打印页面
{
for(int i = 0; i < int(page.size()); i++) { //page.size 必须是固定值
cout << page.front() ;
page.push(page.front());
page.pop();
}
cout << endl;
}
void FIFO(vector<int> number,int size)
{
int Break = 0;//缺页次数
queue<int>page;//页面
for(int i = 0; i < int(number.size());i++ )
{
if(int(page.size()) < size && Find(page,number[i]) )
{
page.push(number[i]);
Break++;
}//如果页面还没被填满且该元素没跟已有元素重复,则向队列中加入此元素,缺页次数加1
else
{
if(Find(page,number[i]))//页面已填满,要查找的元素在页面里没有,则弹出队列首元素,在队列尾加入新元素,缺页次数加1
{
page.pop();
page.push(number[i]);
Break++;
}
}
Show(page);
}
double n = double(Break) / number.size();
cout << "缺页次数:" << Break << endl;
cout << "缺页率:" << n * 100 << "%" ;
}
int main()
{
vector<int> number{2,3,2,1,5,2,4,5,3,2,5,2};
FIFO(number,3);
return 0;
}
c++实现先进先出算法,计算缺页率与缺页次数
于 2023-05-23 22:41:08 首次发布