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 最近最久未使用演算法需要引入記憶體塊時鐘,即為每個記憶體塊設定乙個計時器,用於記錄相應記憶體塊中的頁面已經存在的時間。每次置換選出所有記憶體塊時鐘中最大者作為被置換頁面,當頁面發生置換時,將其...