LRU的C++的简单实现
2014-08-20 22:58
253 查看
class LRUCache提供两个接口:get(int key)和set(int key,value)
测试:
#include<iostream> using namespace std; class LRUCache{ public: LRUCache(int cap):current(0),capacity(cap){ A=new node[cap]; } int get(int key) { for(int i=0;i<current;i++) { if(key==A[i].key) { int temp=A[i].value; node tt=A[i]; for(int k=i;k<current-1;k++) { A[k]=A[k+1]; } A[current-1]=tt; return temp; } } return -1; } void set(int key, int value) { node t; t.key=key; t.value=value; bool has=false; for(int i=0;i<current;i++) { if(key==A[i].key) { A[i].value=value; node tt=A[i]; for(int k=i;k<current-1;k++) { A[k]=A[k+1]; } A[current-1]=tt; has=true; break; } } if(!has) { if(current<capacity) { A[current++]=t; }else{ for(int k=0;k<current-1;k++) { A[k]=A[k+1]; } A[current-1]=t; } } print(); } void print() { for(int i=0;i<current;i++) cout<<A[i].key<<" "; cout<<endl; } private: int current; int capacity; struct node{ int key; int value; }; void swap(node &a,node &b) { node temp; temp=a; a=b; b=temp; } node *A; }; int main() { LRUCache lru(4); lru.set(2,1); lru.set(2,2); lru.set(3,2); lru.set(4,2); lru.set(5,2); lru.set(1,2); lru.set(4,2); lru.set(3,2); lru.set(4,2); lru.get(1); lru.print(); }
测试:
相关文章推荐
- 简单LRU算法实现的Cache(C++)
- 简单LRU算法实现的Cache(C++)
- 简单LRU算法实现的Cache(C++)
- 简单LRU算法实现的Cache(C++)
- 用C++实现简单的文件I/O操作
- 标准纯C++实现简单的词法分析器(二)
- c++ stl list 迭代器简单实现
- 一个简单的多叉树C++实现
- 单链表赋值,定位,添加,(C++ ) 简单实现 未整理
- c++ 控制台模式下实现的简单进度条
- 实例学MFC(3)--超简单C++实现网络下载器
- 用C++实现简单的文件I/O操作
- 策略模式与简单工厂的C++实现
- 标准纯C++实现简单的词法分析器(三)
- 标准纯C++实现简单的词法分析器(二)
- C++中简单实现foreach循环
- 用C++实现简单的文件I/O操作
- c++ 写的linux下简单的实现 get post 请求
- 堆栈的简单C++实现
- C++ 简单实现委托