Как использовать std :: list для реализации LRU

Используя список и хэш-карту, мы можем реализовать LRU на Java.

Как бы вы реализовали LRU-кеш в Java?

В C ++, позволяет ли std :: list реализовать это?

Для каждого элемента в кэше нам нужно знать его положение в списке.
Однако, после удаления позиции, гарантирует ли list, что позиции (list :: iterator) после этой не будут изменены?

0

Решение

Да, вы можете реализовать LRU используя std::list а также std::map,

std::list итераторы, ссылающиеся на сохраненные элементы, не зависят от вставок и стираний других элементов. Смотрите этот ответ: Правила аннулирования итераторов

То же самое верно для std::map, Смотрите этот ответ: Делает ли вставка в карту STL недействительным другой существующий итератор?

1

Другие решения


По вопросам рекламы [email protected]