参考答案
结论:LRUCache由哈希表+双向链表组成,实现O(1)访问与淘汰。核心要点:1)unordered_map<int, list<pair<int,int>>::iterator>记录key到链表节点迭代器;2)list存储(key,value)按使用时间排序,头部最近;3)get时命中则把节点移到头部并返回值,否则返回-1;4)put时命中更新值并移到头,未命中新建节点,若超容量删尾部节点;5)与LFU区别仅关注最近使用而非频率。示例:cap=2时put(1,1),put(2,2),get(1)后2为最久。