コンテナからeraseするときは、iteratorを後置インクリメントすると良いと習ったのですが

for (iterator = container.begin(); it != container.end();){
    if (条件が合えば){
        container.erase( iterator++ );
//     iterator = container.erase( iterator );
    }
    else {
        ++iterator;
    }
}

これだとcontainerがvectorなどだと、最後尾のコンテナを削除したとき
エラーが出てしまいます(コメントアウトした方のやり方だと大丈夫)。
私が習ったやり方はあまり良い物では無いのでしょうか。