链表+指向链表节点的指针的哈希表是实现LRU缓存的常用方法。这给出了O(1)操作(假设一个不错的哈希值)。这样做的优势(为O(1)):您只需锁定整个结构即可创建多线程版本。您不必担心粒度锁定等。
简而言之,它的工作方式:
访问值时,将链接列表中的相应节点移到头部。
当您需要从缓存中删除一个值时,可以从尾端删除。
将值添加到缓存时,只需将其放在链接列表的开头即可。
感谢doublep,这是一个具有C ++实现的站点:其他容器模板。

链表+指向链表节点的指针的哈希表是实现LRU缓存的常用方法。这给出了O(1)操作(假设一个不错的哈希值)。这样做的优势(为O(1)):您只需锁定整个结构即可创建多线程版本。您不必担心粒度锁定等。
简而言之,它的工作方式:
访问值时,将链接列表中的相应节点移到头部。
当您需要从缓存中删除一个值时,可以从尾端删除。
将值添加到缓存时,只需将其放在链接列表的开头即可。
感谢doublep,这是一个具有C ++实现的站点:其他容器模板。