【发布时间】:2015-08-29 14:20:07
【问题描述】:
使用列表和哈希映射,我们可以在 Java 中实现 LRU。
How would you implement an LRU cache in Java?
在 C++ 中,std::list 允许我们实现吗?
对于缓存中的每个元素,我们需要知道它在列表中的位置。 但是,去掉一个位置后,list是否保证这个位置之后的位置(list::iterator)不会改变?
【问题讨论】:
使用列表和哈希映射,我们可以在 Java 中实现 LRU。
How would you implement an LRU cache in Java?
在 C++ 中,std::list 允许我们实现吗?
对于缓存中的每个元素,我们需要知道它在列表中的位置。 但是,去掉一个位置后,list是否保证这个位置之后的位置(list::iterator)不会改变?
【问题讨论】:
是的,您可以使用std::list 和std::map 实现LRU。
std::list 引用保留元素的迭代器不受其他元素的插入和擦除的影响。看到这个答案:Iterator invalidation rules
std::map 也是如此。看到这个答案:Does insertion to STL map invalidate other existing iterator?
【讨论】: