LINUX.ORG.RU

А у std::map старые итераторы остаются рабочими при модификации контейнера?

 , ,


0

2

Понятно что речь идет о случае когда отвечающие итераторам элементы не были удалены.

std::map<T1, T2> M;
... тут мы что то в M напихали ...
I = M.find(k); // что то нашли
... тут мы вовсю добавляем/удаляем элементы в M, но элемент с ключем k НЕ удаляем
>>>> вот тут I рабочий? <<<
★★★★

Последнее исправление: cetjs2 (всего исправлений: 3)

Валидность итератора после изменений указана в документации на модифициюрующий метод. Открой cppreference, да посмотри.

roof ★★
()
Ответ на: комментарий от AntonI

Ну, видимо, причина другая. Например, с самого начала ничего не нашлось. Или все-таки был удален элемент, на который итератор указывал.

roof ★★
()
Ответ на: комментарий от roof

Там сложно, но в итоге по старому итератору удаляется новый (добавленный существенно позже) элемент.

Ладно, все равно переписывать.

AntonI ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.