Здравствуйте, serega3000, Вы писали:
S>Насколько я знаю, после удаления элемента из контейнера итератор теряет свою значимость.
Не совсем так. vector::erase() делает недействительными все итераторы после удаляемой позиции. Соответственно, если идти от конца массива к его началу декрементируя итератор, проблем с удалением не будет.
Re[2]: как удалить элементы из контейнера vector в цикле
Здравствуйте, vayerx, Вы писали:
S>>Насколько я знаю, после удаления элемента из контейнера итератор теряет свою значимость.
V>Не совсем так. vector::erase() делает недействительными все итераторы после удаляемой позиции. Соответственно, если идти от конца массива к его началу декрементируя итератор, проблем с удалением не будет.
Спасибо, но оказывается все еще проще. erase возращает итератор на тот элемент, который занимает место удаленного.
Здравствуйте, serega3000, Вы писали:
S>Спасибо, но оказывается все еще проще. erase возращает итератор на тот элемент, который занимает место удаленного.
S>
Во-первых, в этом случае добавляется дополнительная ветка.
Во-вторых, код не совсем корректен, так как возможен инкремент итератора, находящегося в конце массива.
Re: как удалить элементы из контейнера vector в цикле
Здравствуйте, serega3000, Вы писали:
S>Искал повсюду и не нашел. S>Насколько я знаю, после удаления элемента из контейнера итератор теряет свою значимость. S>Значит, так делать нельзя:
S>
Здравствуйте, serega3000, Вы писали:
S>Искал повсюду и не нашел. S>Насколько я знаю, после удаления элемента из контейнера итератор теряет свою значимость. S>Значит, так делать нельзя:
S>
Re: как удалить элементы из контейнера vector в цикле
От:
Аноним
Дата:
29.10.06 09:18
Оценка:
Здравствуйте, serega3000, Вы писали:
S>Искал повсюду и не нашел. S>Насколько я знаю, после удаления элемента из контейнера итератор теряет свою значимость. S>Значит, так делать нельзя:
S>
V>Во-вторых, код не совсем корректен, так как возможен инкремент итератора, находящегося в конце массива.
Что-то я не усматриваю ситуацию, когда будет проверяться "условие" и итератор будат равен v.end(). Ведь перед этой проверкой идёт проверка на it!=v.end()...