Здравствуйте, BacCM, Вы писали:
BCM>Должно работать:
BCM>BCM>table_iter_t it = table.begin();
BCM>while(it!=table.end){
BCM> ...
BCM> if (cond)
BCM> {
BCM> table.erase(it);
BCM> //Значение итератора остается старым, но указывает на следующий элемент вектора
BCM> continue;
BCM> }
BCM> ++it;
BCM> ...
BCM>}
BCM>
Нет, не должно. После вызова erase итератор становится невалидным, и все дальнейшие операции с ним ведут к UB.
Однако в случае, когда итератор вектора — обычный указатель, то этот код будет работать, причем правильно. Но если поменяется реализация STL, и в этой реализации вектор будет иметь "полноценные" итераторы, то сюрпризы обеспечены.