146.LRU cache 题目链接 146. LRU 缓存 - 力扣(LeetCode) 
完整代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 class  LRUCache  {private :     int  cap=0 ;     list<pair<int ,int >> lru;        unordered_map<int ,list<pair<int ,int >>::iterator> mp;   public :     LRUCache (int  capacity) {         cap = capacity;						     }          int  get (int  key)   {						         if (mp.find (key)!=mp.end ()){							             lru.splice (lru.begin (),lru,mp[key]);			             return  lru.begin ()->second;				         }else {             return  -1 ;								         }     }          void  put (int  key, int  value)   {         if (get (key)!=-1 ){				             lru.begin ()->second = value;         }else {			             if (lru.size ()==cap){			                 int  delkey = lru.back ().first;		                  lru.pop_back ();						                  mp.erase (delkey);					              }             lru.emplace_front (key,value);			             mp[key]=lru.begin ();					         }     } };
参考资料 C++实现LRU缓存——LeetCode146 - 简书 (jianshu.com)