ヨハネス・シャウブはhereイテレータにプレフィックスインクリメントフォームを使用する理由
は常にその定義があなたが知らない イテレータのための前置インクリメント形式を使用しますと主張しています。これにより、コードの実行には が可能です。
for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it) {
/* std::cout << *it; ... */
}
なぜこの最初の反復は、その後、(v.begin()は、+ 1で)ループを開始しませんか?あなたのコードが
for(std::vector<T>::iterator it = v.begin(); it != v.end();) {
/* std::cout << *it; ... */
++it;
}
、あなたが++it
を書く場合、それは問題ではないことは容易に理解できるであろうと同じです