【问题标题】:LRU cache in C++ [duplicate]C ++中的LRU缓存[重复]
【发布时间】:2012-10-27 23:04:20
【问题描述】:

可能重复:
LRU cache design

我在一次编程面试中得到了这个问题。随意考虑如何回答。

您将如何在 C++ 中实现 LRU(最近最少更新)缓存?基本上,缓存最多可以容纳N 个项目。如果插入了一个新项目并且缓存中的项目数小于N,则它只是插入。但是如果插入了一个新项目并且缓存中的项目数已经是N,那么最近最少使用的项目应该从缓存中删除。

想想您的每项操作需要多少运行时间。

【问题讨论】:

标签: c++ caching data-structures lru


【解决方案1】:

我将拥有存储上次访问时间的缓存元素的成员。当元素被访问(成员函数被调用)时,访问时间成员被更新。当缓存已满时,访问时间最短的元素将被删除。

其他选项是在intrusive list 中缓存元素。当某些东西被访问并且不在列表顶部时,它会出现在列表顶部。当缓存已满时,列表的底部元素被擦除。每次访问都需要做更多工作,但可以更快地找到受害者。

基本想法是不要为此类任务提供典型的地图和列表,这些会分散您的记忆。我的算法将缓存始终保持在一个位置。

【讨论】:

  • 当然,这应该可行,但您必须遍历所有元素才能找到访问时间最短的元素。
  • 好的,我添加了其他算法,在缓存元素非常多的情况下可能有意义。
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 2015-12-16
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多