最近项目里需要实现一个LRU算法,github上找到一个c++版本,虽然C++用的少,但看了下源码之后发现学到了不少知识。本文记录如何使用该开源库,最后给出学习之后对源代码的注释版本。
原项目地址:cpp-lru-cache
源代码使用,将如下代码命名为lru_example.cpp,并与文件lrucache.hpp放在同一个目录下。使用如下命令编译:
g++ -g -std=c++11 -o lru_example lru_example.cpp
lru_example.cpp
#include "lrucache.hpp"
#include <iostream>
int main()
{
/**Creates cache with maximum size of three. When the
size in achieved every next element will replace the
least recently used one */
cache::lru_cache<int, std::string> cache(3);
cache.put(0, "zero");
cache.put(1, "two");
cache.put(2, "three");
cache.put(3, "four");
cache.put(4, "five");
const std::string& from_cache = cache.get(4);
std::cout << from_cache << std::endl;
return 0;
}
程序执行结果:
[root include]#./lru_example
five
根据个人习惯修改版本:
本文所讲的lru cpp实现版本非线程安全,使用前需要加锁以保证原子性。
google开源代码里有一套线程安全的实现,周末有时间学习实现思想,将代码抽成公共代码提交到github.