これ実行すると0と2が表示されるので一応は問題ないですか?汚いとは思うけど。

int main(void)
{
vector<int> vec;
vec.push_back(0);
vec.push_back(1);
vec.push_back(2);

for(vector<int>::iterator ite = vec.begin(); ite != vec.end();){
if(*ite == 1){
vec.erase(ite++);
printf("num: %d\n", *ite);
}else{
printf("num: %d\n", *ite);
++ite;
}
}

return 0;
}