2014-12-18 2 views
3

Я использую кеш LRU в своей программе. у меня есть:приоритетная очередь и карта

class DiadocCache : public IDiadocCache<K,T> 
     { 
     private: 
      std::map<K, CacheEntry<T>> values_; 
      std::priority_queue<?> timeQueue_; 
     } 

приоритет - это количество просмотров ключа в моем случае.

Я положил элементы на std :: map следующим образом: values_.insert (std :: make_pair (ключ, CacheEntry (значение)));

Как я могу добавлять элементы в priority_queue? И какие типы должны указываться при создании очереди приоритетов? std :: priority_queue < ?>

+0

Знаете ли вы, что вы не можете изменять элементы внутри priority_queue? – MikeMB

ответ

0

LRU не может быть реализован с использованием текущего DS. вы должны использовать DLL с хэшированием каждого элемента. вы можете использовать список с unordered_hash или map. Как и в текущей реализации, вы не можете обновить данные priority_queue.