Я работаю над реализацией LRU Cache на основе упражнения LeetCode, но следующий код не компилируется
using namespace std;
class LRUCache {
private:
list<int> data;
unordered_map<int, list<int>::iterator&> keys_to_data;
void update_recency(int key, list<int>::iterator& it) {
data.erase(it);
data.push_front(key);
keys_to_data[key]; // issue here
}
public:
LRUCache(int capacity) {
}
int get(int key) {
int value = -1;
auto value_it = keys_to_data.find(key);
if(value_it != keys_to_data.end()) {
value = *(value_it->second);
update_recency(key, value_it->second);
}
return value;
}
void put(int key, int value) {
}
};
/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / tuple: 1360: 7: ошибка: для ссылки на тип 'std :: __ 1 :: __ list_iterator' требуется секунда инициализации (_VSTD :: forward <_Args2> (_ VSTD :: get <_I2> (__ second_args)) ...) ^
... огромная трассировка стека ...
/ Users / Paul / Desktop / int / main.cpp: 17: 21: примечание: при создании функции-члена 'std :: __ 1 :: unordered_map &,std :: __ 1 :: hash, std :: __ 1 :: equal_to, std :: __ 1 :: allocator &>>> :: operator [] 'запрашивается здесь keys_to_data [key];