固定大小的地图,同时保持流行的东西

时间:2017-01-24 04:34:33

标签: c++ unordered-map

如果我想拥有一个只存储热门内容的固定大小的缓存,我该怎么办?我不想发明轮子。修复地图的大小很简单,

static const int max_size = 100;
std::map<key_t, value_t> cache_map_t;
cache_map_t::const_iterator it = m_table.find( key );
if ( it != m_table.end() && m_table.size() == max_size ) { 
   // handle error, throw exception...
} else {
   m_table.insert( it, std::make_pair(key,value) );
}

并且为了找到不受欢迎的东西,我可以继续插入直到达到max_size,同时有一个“访问计数器”,它存储每个元素被访问的时间。达到max_size后,我可以对相应的计数器进行一次传递,并删除访问次数最少的元素。但是这第二部分效率不高,并且想知道是否有更好的解决方案。

0 个答案:

没有答案