История изменений
Исправление KivApple, (текущая версия) :
Ты не можешь из указателя на элемент за O(1) сделать обратно итератор для std::list (для std::vector можешь, но там нет гарантий стабильности указателей). То есть для erase тебе потребуется std::find, который за O(N) будет искать твой элемент. То есть преобразование итератора в указатель происходит с потерей информации (восстановимой, но всё же).
Если бы не была нужна возможность восстановиь итератор, то можно было бы вообще сделать get у shared_ptr и не париться (ну или &**).
Исправление KivApple, :
Ты не можешь из указателя на элемент за O(1) сделать обратно итератор для std::list (для std::vector можешь, но там нет гарантий стабильности указателей). То есть для erase тебе потребуется std::find, который за O(N) будет искать твой элемент.
Если бы не была нужна возможность восстановиь итератор, то можно было бы вообще сделать get у shared_ptr и не париться (ну или &**).
Исправление KivApple, :
Ты не можешь из указателя на элемент за O(1) сделать обратно итератор для std::list (для std::vector можешь, но там нет гарантий стабильности указателей). То есть для erase тебе потебуется std::find, который за O(N) будет искать твой элемент.
Если бы не была нужна возможность восстановиь итератор, то можно было бы вообще сделать get у shared_ptr и не париться (ну или &**).
Исходная версия KivApple, :
Ты не можешь из указателя на элемент за O(1) сделать обратно итератор для std::list (для std::vector можешь, но там нет гарантий стабильности указателей). То есть для erase тебе потебуется std::find, который за O(N) будет искать твой элемент.