Re[3]: вопрос про stl, vector::erase
От: Mongush  
Дата: 17.01.05 20:50
Оценка:
Здравствуйте, A.Grom, Вы писали:

AG>Зачем так сложно?

AG>erase возвращает ближайший валидный итератор, следующий за удалённым значением, или .end() если в контейнере больше ничего нет.

AG>
AG>   table_iter_t it = table.begin();
AG>    while(it != table.end())
AG>    {
AG>      if (cond)
AG>         it = table.erase(it);
AG>      else 
AG>         ++it;
AG>    }
AG>

Так лучше, но еще лучше будет так:
table.erase(remove_if(table.begin(),table.end(), cond() ),table.end());

вызвывть erase в цикле — очень доргое удовольствие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.