| 737 | |
| 738 | template <typename TKey, typename TValue, typename TDeleter = TNoopDelete, typename TAllocator = std::allocator<TKey>, class TSizeProvider = TUniformSizeProvider<TValue>> |
| 739 | class TLFUCache: public TCache<TKey, TValue, TLFUList<TKey, TValue, TSizeProvider>, TDeleter, TAllocator> { |
| 740 | typedef TCache<TKey, TValue, TLFUList<TKey, TValue, TSizeProvider>, TDeleter, TAllocator> TBase; |
| 741 | using TListType = TLFUList<TKey, TValue, TSizeProvider>; |
| 742 | |
| 743 | public: |
| 744 | typedef typename TBase::TIterator TIterator; |
| 745 | |
| 746 | TLFUCache(size_t maxSize, bool multiValue = false, const TSizeProvider& sizeProvider = TSizeProvider()) |
| 747 | : TBase(TListType(maxSize, sizeProvider), multiValue) |
| 748 | { |
| 749 | } |
| 750 | |
| 751 | TValue& GetLeastFrequentlyUsed() { |
| 752 | return TBase::List.GetLeastFrequentlyUsed()->Value; |
| 753 | } |
| 754 | |
| 755 | TIterator FindLeastFrequentlyUsed() { |
| 756 | return TBase::Empty() ? TBase::End() : this->FindByItem(TBase::List.GetLeastFrequentlyUsed()); |
| 757 | } |
| 758 | }; |
| 759 | |
| 760 | // Least Weighted cache |
| 761 | // discards the least weighted items first |
nothing calls this directly
no test coverage detected