Здравствуйте, BlackBox, Вы писали:
BB>Добрый день.
BB>Мне надо в цикле перебирать значения хранящиеся в векторе. При определенном условии я должен удалить текущее знаечение из вектора и продолжить обход.
BB>Сейчас сделал так:
BB>BB>...
BB>table_iter_t it = table.begin();
BB>for (int i=0; it != table.end(); it++, i++)
BB>{
BB>...
BB> if (cond)
BB> {
BB> table.erase(it);
BB> i--;
BB> it = table.begin()+i;
BB> continue;
BB> }
BB>...
BB>}
BB>
BB>Легальный ли это код или лучше сделать c remove+erase?
Не совсем если удалишь нулевой элемент потом i-- ...
BB>Заранее спасибо за ответы.
Должно работать:
table_iter_t it = table.begin();
while(it!=table.end){
...
if (cond)
{
table.erase(it);
//Значение итератора остается старым, но указывает на следующий элемент вектора
continue;
}
++it;
...
}
... << RSDN@Home 1.1.4 beta 3 rev. 241>>