erase

v.erase(it++);
v.erase(it);it++;

の二つが等価でないのはなぜだと思っていたが、operator ++ (int) の実装を考えれば明らかであった。