Значит удалять айтем (имея вумный указатель на него) нечем, стандартные средства этого не обеспечивают, придется великом.
Никто за Вас не напишет дерево с нужными Вам характеристиками. Выше предлагали два варианта, которыми люди пользуются. И Вы ими воспользуйтесь, или опишите, что Вы считаете "стандартным" деревом, которое подойдёт для большинства случаев (как std::vector для contiguous контейнера).
У меня немало случаев когда голые указатели на айтемы хранятся в мапе как key или value. Не вижу как менять их на вумные (какие ?). Ну ясно шаред сразу разрушает весь ф-ционал. К сожалению, не проходит и weak. Даже если перетерпеть занудный лок - сравнение мапы перестанет работать.
How can I use a std::map with std::weak_ptr as key?