Для своей задачи я использую std::list<Key>
для поддержания порядка элементов во временном LRU-кэше. Итак, одна из частых операций - вынуть элемент списка и поместить его обратно в начало списка.
Очевидно, что его можно реализовать, используя сначала std::list::erase
, а затем std::list::push_front
. Однако мне не нравится идея иметь дело с перераспределением памяти, когда все, что я хочу сделать, это переместить узел списка в другую позицию.
Это именно то, что метод extract
позволяет нам делать для std::map
, std::set
et c: вынуть узел, изменить его и вернуть обратно без перераспределения.
Есть ли разумное объяснение, почему std::list
не имеет такой же функциональности и Есть ли обходной путь для Мими c это с существующим классом API?