Вот возникла такая мысля
vector<T> v;
vector<T>::iterator i;
// Сдвижка итератора куда-либо
v.erase(i);
после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Здравствуйте, BacCM, Вы писали:
BCM>Вот возникла такая мысля
BCM>BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>v.erase(i);
BCM>
BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть
Недействителен. И если я не ошибаюсь, то не только он, но и все итераторы, указывающие на этот вектор.
Здравствуйте, BacCM, Вы писали:
BCM>Вот возникла такая мысля
BCM>BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>v.erase(i);
BCM>
BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть
после удаления элемента становится недействительнм сам i и все итераторы и ссылки стоящие за удалённым элементом (ANSI).
Здравствуйте, 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. почему ты генеришь кучу топиков?
Здравствуйте, BacCM, Вы писали:
BCM>Вот возникла такая мысля
BCM>BCM>vector<T> v;
BCM>vector<T>::iterator i;
BCM>// Сдвижка итератора куда-либо
BCM>i=v.erase(i);
//i валидный итератор
BCM>
BCM>после этого i действителен или его нужно заного инициализировать, если с точки зрения стандарта на это дело смотреть