C 實現LRU(最久未使用)快取演算法

2021-07-05 05:54:05 字數 687 閱讀 6783

lru快取演算法也叫lru頁面置換演算法,是一種經典常用的頁面置換演算法,本文將用c++實現乙個lru演算法。

lru演算法實現並不難,但是要高效地實現卻是有難度的,要想高效實現其中的插入、刪除、查詢,第一想法就是紅黑樹,但是紅黑樹也是一種折中的辦法。插入、刪除效率最高當屬鍊錶,查詢效率當屬hash。所以,這裡我們就將鍊錶和hash結合起來,利用空間換時間的思想,實現lru演算法。

lru具體概念就不列出了,本文的目的是進一步了解lru演算法和學習高效的程式設計方法。

**如下:

class lrucache

};public:

lrucache(int c):capacity(c) {}

int get(int key)

void set(int key, int value)

cachelist.push_front(node(key,value));

cachemap[key] = cachelist.begin();

} else

}private:

int capacity;

listcachelist;

unordered_map::iterator> cachemap;

};

實際演算法並不難,但是高效解決問題的思想是值得學習的。也讓我們更加了解lru快取演算法了。

C 實現LRU(最久未使用)快取演算法

lru快取演算法也叫lru頁面置換演算法,是一種經典常用的頁面置換演算法,本文將用c 實現乙個lru演算法。lru演算法實現並不難,但是要高效地實現卻是有難度的,要想高效實現其中的插入 刪除 查詢,第一想法就是紅黑樹,但是紅黑樹也是一種折中的辦法。插入 刪除效率最高當屬鍊錶,查詢效率當屬hash。所...

LRU最久未使用淘汰演算法實現

lru 缺頁置換演算法中的一種,當容量滿的時候,新增新的一頁,就會置換淘汰掉最久未使用的一頁。實現 可以採用鍊錶實現 主要是因為該演算法體現在頭部和尾部的操作居多。因此採用雙向鍊錶為佳。介於c stl容器的list實現為乙個方式。由於牽扯到判斷是否存在的問題,因此需要遍歷查詢。該演算法實現時間複雜度...

LRU最近最久未使用演算法

標籤 演算法 作業系統 舉報 作業系統知識庫 c 21 作者同類文章x 作業系統學習 11 作者同類文章x 最近最久未使用演算法需要引入記憶體塊時鐘,即為每個記憶體塊設定乙個計時器,用於記錄相應記憶體塊中的頁面已經存在的時間。每次置換選出所有記憶體塊時鐘中最大者作為被置換頁面,當頁面發生置換時,將其...