Удаление элемента std::vector
От: BacCM Россия  
Дата: 09.12.04 11:28
Оценка:
Вот возникла такая мысля
vector<T> v;
vector<T>::iterator i;
// Сдвижка итератора куда-либо
v.erase(i);

после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: Удаление элемента std::vector
От: Glоbus Украина  
Дата: 09.12.04 11:30
Оценка:
Здравствуйте, BacCM, Вы писали:

BCM>Вот возникла такая мысля

BCM>
BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>v.erase(i);
BCM>

BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть

Недействителен. И если я не ошибаюсь, то не только он, но и все итераторы, указывающие на этот вектор.
Удачи тебе, браток!
Re: Удаление элемента std::vector
От: adr Украина  
Дата: 09.12.04 11:50
Оценка:
Здравствуйте, BacCM, Вы писали:

BCM>Вот возникла такая мысля

BCM>
BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>v.erase(i);
BCM>

BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть

после удаления элемента становится недействительнм сам i и все итераторы и ссылки стоящие за удалённым элементом (ANSI).
Re: Удаление элемента std::vector
От: DangerDen  
Дата: 09.12.04 11:51
Оценка:
Здравствуйте, BacCM, Вы писали:

BCM>Вот возникла такая мысля

BCM>
BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>v.erase(i);
BCM>

BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть

см. пункт 23.2.4.3 vector modifiers

iterator erase(iterator position);
iterator erase(iterator first, iterator last);

Effects: Invalidates all the iterator and references after the point of erase.

Т.е. портятся только итераторы и ссылки, расположенные после места удаления.
Т.е. i тебе надо заново инициализировать.... То, на что i указывал ты удалил..

P.s. почему ты генеришь кучу топиков?
Re: Удаление элемента std::vector
От: Аноним  
Дата: 09.12.04 15:19
Оценка:
Здравствуйте, BacCM, Вы писали:

BCM>Вот возникла такая мысля

BCM>
BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>i=v.erase(i);
//i валидный итератор
BCM>

BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.