lru快取演算法也叫lru頁面置換演算法,是一種經典常用的頁面置換演算法,本文將用c++實現乙個lru演算法。
lru演算法實現並不難,但是要高效地實現卻是有難度的,要想高效實現其中的插入、刪除、查詢,第一想法就是紅黑樹,但是紅黑樹也是一種折中的辦法。插入、刪除效率最高當屬鍊錶,查詢效率當屬hash。所以,這裡我們就將鍊錶和hash結合起來,利用空間換時間的思想,實現lru演算法。
include
#include
#include
using
namespace std;
class
lrucache
intget
(int key)
void
set(
int key,
int val)
cachelist.
push_front
(node
(key,val));
cachemap[key]
=cachelist.
begin()
;}else
}void
show()
cout<}private
:struct node
};int capacity;
list cachelist;
unordered_map<
int,list
::iterator> cachemap;};
intmain()
{ lrucache lru(3
);lru.
set(1,
10); lru.
show()
; lru.
set(2,
20); lru.
show()
; lru.
set(3,
30); lru.
show()
; lru.
set(4,
40); lru.
show()
;
C 實現LRU(最久未使用)快取演算法
lru快取演算法也叫lru頁面置換演算法,是一種經典常用的頁面置換演算法,本文將用c 實現乙個lru演算法。lru演算法實現並不難,但是要高效地實現卻是有難度的,要想高效實現其中的插入 刪除 查詢,第一想法就是紅黑樹,但是紅黑樹也是一種折中的辦法。插入 刪除效率最高當屬鍊錶,查詢效率當屬hash。所...
LRU最久未使用淘汰演算法實現
lru 缺頁置換演算法中的一種,當容量滿的時候,新增新的一頁,就會置換淘汰掉最久未使用的一頁。實現 可以採用鍊錶實現 主要是因為該演算法體現在頭部和尾部的操作居多。因此採用雙向鍊錶為佳。介於c stl容器的list實現為乙個方式。由於牽扯到判斷是否存在的問題,因此需要遍歷查詢。該演算法實現時間複雜度...
LRU最近最久未使用演算法
標籤 演算法 作業系統 舉報 作業系統知識庫 c 21 作者同類文章x 作業系統學習 11 作者同類文章x 最近最久未使用演算法需要引入記憶體塊時鐘,即為每個記憶體塊設定乙個計時器,用於記錄相應記憶體塊中的頁面已經存在的時間。每次置換選出所有記憶體塊時鐘中最大者作為被置換頁面,當頁面發生置換時,將其...