22:09

С++

Ну я убиваю людей и ем руки - всего две вещи.
Вопрос по STL map. Конкретнее, про итераторы.

Если взять цикл и удалить в нём элемент, то на какую позицию переместится итератор? Пробовал перемещать итератор после удаления и назад, и вперёд, что только не пробовал, зависает на этом моменте:

читать дальше

Может проблема не в итераторе? Вроде удаляю из словаря правильно. А оно зависает, как находит подходящее под первое условие, т.е. когда надо удалить.
Подскажите в чём проблема, пожалуйста.

Комментарии
16.12.2009 в 23:21

А ты уже научился заряжать левой ногой свой телефон?
вроде этот итератор тогда не валидным становится
нужно сохранить, удалить по текущему и переприсвоить
типа того:
nextIterator = iter
++nextIterator
table.erase( iter )
iter = nextIterator
17.12.2009 в 00:03

Ну я убиваю людей и ем руки - всего две вещи.
SonicCat отличная идея, спасибо! Но всё равно работать не хочет. Даже не знаю, что ему не нравится, всё вроде правильно. На том же месте запарывается.
17.12.2009 в 11:29

А ты уже научился заряжать левой ногой свой телефон?
тут пример вроде как раз в тему www.cplusplus.com/reference/stl/map/erase/
ну и описание самого map www.cplusplus.com/reference/stl/map/

ммм в моем примере он может за границу убежать, надо наоборот предыдущий сохранять

lastIterator = iter
--lastIterator
table.erase( iter )
iter = lastIterator
17.12.2009 в 15:44

Ну я убиваю людей и ем руки - всего две вещи.
я этот сайт читал.)

и так не работает. Никак оно не работает. Не понятно, почему.:duma2: