LRU缓存
class LRUCache{
private:
int _capacity;
list<pair<int, int>> res;//双向链表
unordered_map<int, list<pair<int, int>>::iterator> map;
public:
LRUCache(int capacity) : _capacity(capacity) {}
int get(int key) {
if (map.count(key) == 0)return -1;
res.splice(res.begin(), res, map[key]);//调整位置
return map[key]->second;
}
void put(int key, int value) {
if (get(key) == -1) {
if (res.size() == _capacity) {
map.erase(res.back().first);//删除长时间没使用的元素
res.pop_back();
}
res.push_front({ key,value });//新进的元素要放在头部
map[key] = res.begin();//指针初始化
}
else {
map[key]->second = value;
}
}
};
智能指针是 C++ 提供的一种对象,用于自动管理动态分配的内存资源。它通过 RAII(资源获取即初始化)的方式,在对象生命周期结束时自动释放内存,避免手动调用 delete 导致的内存泄漏或重复释放问题。
智能指针通常封装了原始指针,提供类似指针的行为,同时附加了资源管理功能。
因篇幅问题不能全部显示,请点此查看更多更全内容