tlx
LruCacheSet< Key, Alloc > Class Template Reference

This is an expected O(1) LRU cache which contains a set of key-only elements. More...

#include <lru_cache.hpp>

Public Member Functions

 LruCacheSet (const Alloc &alloc=Alloc())
 
void clear ()
 clear LRU More...
 
void put (const Key &key)
 put or replace/touch item in LRU cache More...
 
void touch (const Key &key)
 touch value from LRU cache for key. More...
 
bool touch_if_exists (const Key &key) noexcept
 touch value from LRU cache for key. 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...
 
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...
 
Key pop ()
 return the least recently used key value pair More...
 

Protected Types

using List = typename std::list< Key, 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...
 

Detailed Description

template<typename Key, typename Alloc = std::allocator<Key>>
class tlx::LruCacheSet< Key, Alloc >

This is an expected O(1) LRU cache which contains a set of key-only elements.

Elements can be put() into LRU cache, and tested for existence using exists(). Insertion and touch() 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() after an insert and may extract the least recently used element.

Definition at line 42 of file lru_cache.hpp.

Member Typedef Documentation

using List = typename std::list<Key, Alloc>
protected

Definition at line 45 of file lru_cache.hpp.

using ListIterator = typename List::iterator
protected

Definition at line 46 of file lru_cache.hpp.

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>
protected

Definition at line 51 of file lru_cache.hpp.

Constructor & Destructor Documentation

LruCacheSet ( const Alloc &  alloc = Alloc())
inlineexplicit

Definition at line 54 of file lru_cache.hpp.

Member Function Documentation

void clear ( )
inline

clear LRU

Definition at line 59 of file lru_cache.hpp.

void erase ( const Key &  key)
inline

remove key from LRU cache

Definition at line 102 of file lru_cache.hpp.

bool erase_if_exists ( const Key &  key)
inlinenoexcept

remove key from LRU cache

Definition at line 114 of file lru_cache.hpp.

bool exists ( const Key &  key) const
inline

test if key exists in LRU cache

Definition at line 125 of file lru_cache.hpp.

Key pop ( )
inline

return the least recently used key value pair

Definition at line 135 of file lru_cache.hpp.

void put ( const Key &  key)
inline

put or replace/touch item in LRU cache

Definition at line 65 of file lru_cache.hpp.

size_t size ( ) const
inlinenoexcept

return number of items in LRU cache

Definition at line 130 of file lru_cache.hpp.

void touch ( const Key &  key)
inline

touch value from LRU cache for key.

Definition at line 80 of file lru_cache.hpp.

bool touch_if_exists ( const Key &  key)
inlinenoexcept

touch value from LRU cache for key.

Definition at line 92 of file lru_cache.hpp.

Member Data Documentation

List list_
private

list of entries in least-recently used order.

Definition at line 147 of file lru_cache.hpp.

Map map_
private

map for accelerated access to keys

Definition at line 149 of file lru_cache.hpp.


The documentation for this class was generated from the following file: