如何使用std::list实现LRU

How to use std::list to implement LRU

使用列表和哈希映射,我们可以在 Java 中实现 LRU。

How would you implement an LRU cache in Java?

在 C++ 中,std::list 允许我们实现这个吗?

对于缓存中的每个元素,我们需要知道它在列表中的位置。 但是,list去掉一个位置后,是否保证这个位置之后的位置(list::iterator)不会改变?

是的,您可以使用 std::liststd::map 实现 LRU。

std::list 引用保留元素的迭代器不受其他元素的插入和擦除的影响。看到这个答案:Iterator invalidation rules

std::map也是如此。看到这个答案:Does insertion to STL map invalidate other existing iterator?