复杂性 LRU 缓存
Complexity LRU cache?
我需要获取缓存复杂度O(log (n))。据说这种复杂性允许地图和列表。例如,实现:
http://blackcat.ca/svn/trunk/lru_cache/src/lru_cache.h
但是在此算法中,此类操作与列表一起呈现:List.splice() - Complexity O(n).List.erase() - Complexity O(n).
这里人们说映射和列表将复杂度为O(log(n))。https://stackoverflow.com/a/3640392/3274299
为什么选择O(log(n))?必须有 O(n)。
"但是在这个算法中,这样的操作与列表一起呈现:List.splice() - Complexity O(n)。List.erase() - Complexity O(n)."
不。。。您从哪里获得这些复杂性值? 请记住,您不是使用键(这将是 O(n))搜索列表 - 相反,您正在使用地图来查找列表中要操作的位置。
您发布的 lru_cache.h 代码仅使用此处提到的 cpp首选项列表::splice 重载中的重载 (2),正如所记录的那样,它具有恒定的复杂性。
同样,这里的erase
使用是重载(1),具有恒定的复杂性。
相关文章:
- cmake更新缓存的变量
- 试图对缓存进行跨步测试,但程序并没有结束
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 通过ccmake在cmake中缓存依赖选项
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何使缓存线程安全
- 存储指令是否会阻止缓存未命中的后续指令?
- 缓存局部性与函数调用
- Qt 网页程序集缓存
- 无法链接 LRU 缓存C++
- 最近最少使用的 (LRU) 缓存
- C++ 将多索引提升为 LRU 缓存的索引排序问题
- 复杂性 LRU 缓存
- LRU 缓存C++实现问题
- 如何LRU缓存大量由C++STL重结构组成的对象
- LRU缓存C++实现
- 在c++中实现LRU缓存-编译错误
- 如何实现线程安全的LRU缓存回收
- LRU 缓存和多线程
- LRU缓存和快速定位对象通常使用哪些数据结构