tlx
|
This is an expected O(1) LRU cache which contains a map of (key -> value) elements. More...
#include <lru_cache.hpp>
Public Types | |
using | KeyValuePair = typename std::pair< Key, Value > |
Public Member Functions | |
LruCacheMap (const Alloc &alloc=Alloc()) | |
void | clear () |
clear LRU More... | |
void | put (const Key &key, const Value &value) |
put or replace/touch item in LRU cache More... | |
void | touch (const Key &key) |
touch pair in LRU cache for key. Throws if it is not in the map. More... | |
bool | touch_if_exists (const Key &key) noexcept |
touch pair in LRU cache for key. Returns true if it exists. More... | |
void | erase (const Key &key) |
remove key from LRU cache More... | |
bool | erase_if_exists (const Key &key) noexcept |
remove key from LRU cache More... | |
const Value & | get (const Key &key) |
get and touch value from LRU cache for key. More... | |
const Value & | get_touch (const Key &key) |
get and touch value from LRU cache for key. More... | |
bool | exists (const Key &key) const |
test if key exists in LRU cache More... | |
size_t | size () const noexcept |
return number of items in LRU cache More... | |
KeyValuePair | pop () |
return the least recently used key value pair More... | |
Protected Types | |
using | List = typename std::list< KeyValuePair, Alloc > |
using | ListIterator = typename List::iterator |
using | Map = typename std::unordered_map< Key, ListIterator, std::hash< Key >, std::equal_to< Key >, typename Alloc::template rebind< std::pair< const Key, ListIterator > >::other > |
Private Attributes | |
List | list_ |
list of entries in least-recently used order. More... | |
Map | map_ |
map for accelerated access to keys More... | |
This is an expected O(1) LRU cache which contains a map of (key -> value) elements.
Elements can be put() by key into LRU cache, and later retrieved with get() using the same key. Insertion and retrieval will remark the elements as most recently used, pushing all other back in priority. The LRU cache itself does not limit the number of items, because it has no eviction mechanism. Instead, the user program must check size() before or after an insert and may extract the least recently used element.
Definition at line 175 of file lru_cache.hpp.
using KeyValuePair = typename std::pair<Key, Value> |
Definition at line 178 of file lru_cache.hpp.
|
protected |
Definition at line 181 of file lru_cache.hpp.
|
protected |
Definition at line 182 of file lru_cache.hpp.
|
protected |
Definition at line 184 of file lru_cache.hpp.
|
inlineexplicit |
Definition at line 190 of file lru_cache.hpp.
|
inline |
clear LRU
Definition at line 195 of file lru_cache.hpp.
|
inline |
remove key from LRU cache
Definition at line 237 of file lru_cache.hpp.
|
inlinenoexcept |
remove key from LRU cache
Definition at line 249 of file lru_cache.hpp.
|
inline |
test if key exists in LRU cache
Definition at line 283 of file lru_cache.hpp.
|
inline |
get and touch value from LRU cache for key.
Definition at line 260 of file lru_cache.hpp.
|
inline |
get and touch value from LRU cache for key.
Definition at line 271 of file lru_cache.hpp.
|
inline |
return the least recently used key value pair
Definition at line 293 of file lru_cache.hpp.
|
inline |
put or replace/touch item in LRU cache
Definition at line 201 of file lru_cache.hpp.
|
inlinenoexcept |
return number of items in LRU cache
Definition at line 288 of file lru_cache.hpp.
|
inline |
touch pair in LRU cache for key. Throws if it is not in the map.
Definition at line 216 of file lru_cache.hpp.
|
inlinenoexcept |
touch pair in LRU cache for key. Returns true if it exists.
Definition at line 227 of file lru_cache.hpp.
|
private |
list of entries in least-recently used order.
Definition at line 305 of file lru_cache.hpp.
|
private |
map for accelerated access to keys
Definition at line 307 of file lru_cache.hpp.