Caches 0.1.0
LRU/LFU/FIFO Caches library
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
caches::LFUCachePolicy< Key > Class Template Reference

LFU (Least frequently used) cache policy. More...

#include <lfu_cache_policy.hpp>

Inheritance diagram for caches::LFUCachePolicy< Key >:
Inheritance graph
[legend]
Collaboration diagram for caches::LFUCachePolicy< Key >:
Collaboration graph
[legend]

Public Types

using lfu_iterator = typename std::multimap< std::size_t, Key >::iterator
 

Public Member Functions

void Insert (const Key &key) override
 Handle element insertion in a cache.
 
void Touch (const Key &key) override
 Handle request to the key-element in a cache.
 
void Erase (const Key &key) noexcept override
 Handle element deletion from a cache.
 
const Key & ReplCandidate () const noexcept override
 Return a key of a replacement candidate.
 
virtual void Insert (const Key &key)=0
 Handle element insertion in a cache.
 
virtual void Touch (const Key &key)=0
 Handle request to the key-element in a cache.
 
virtual void Erase (const Key &key)=0
 Handle element deletion from a cache.
 
virtual const Key & ReplCandidate () const =0
 Return a key of a replacement candidate.
 

Detailed Description

template<typename Key>
class caches::LFUCachePolicy< Key >

LFU (Least frequently used) cache policy.

LFU policy in the case of replacement removes the least frequently used element.

Each access to an element in the cache increments internal counter (frequency) that represents how many times that particular key has been accessed by someone. When a replacement has to occur the LFU policy just takes a look onto keys' frequencies and remove the least used one. E.g. cache of two elements where A has been accessed 10 times and B – only 2. When you want to add a key C the LFU policy returns B as a replacement candidate.

Template Parameters
KeyType of a key a policy works with

Member Function Documentation

◆ Erase()

template<typename Key >
void caches::LFUCachePolicy< Key >::Erase ( const Key &  key)
inlineoverridevirtualnoexcept

Handle element deletion from a cache.

Parameters
[in]keyKey that should be used by the policy

Implements caches::ICachePolicy< Key >.

◆ Insert()

template<typename Key >
void caches::LFUCachePolicy< Key >::Insert ( const Key &  key)
inlineoverridevirtual

Handle element insertion in a cache.

Parameters
[in]keyKey that should be used by the policy

Implements caches::ICachePolicy< Key >.

◆ ReplCandidate()

template<typename Key >
const Key & caches::LFUCachePolicy< Key >::ReplCandidate ( ) const
inlineoverridevirtualnoexcept

Return a key of a replacement candidate.

Returns
Replacement candidate according to selected policy

Implements caches::ICachePolicy< Key >.

◆ Touch()

template<typename Key >
void caches::LFUCachePolicy< Key >::Touch ( const Key &  key)
inlineoverridevirtual

Handle request to the key-element in a cache.

Parameters
key

Implements caches::ICachePolicy< Key >.


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