次のステートメントを検討してください。
for (Container<Object>::Iterator it = container.begin(); it != container.end(); it++) {
*loop_content*
}
対。
for (Container<Object>::Iterator it = container.begin(); it != container.end(); ++it) {
*loop_content*
}
私の理解では、*loop_content* が何であるかに関係なく、上記の例のように for ループ内で使用された場合、プリインクリメント バージョンはポストインクリメント バージョンより悪くないことが保証されます。このステートメントがもはや真実ではなくなり、ポストインクリメントが実際にプレインクリメントよりも優れている例外や極端なコーナーケースはありますか?
そうでない場合は、ここで私が何年も疑問に思っていた、少し話題から外れた2 番目の質問があります。なぜ多くの教科書が、次のような例で for ループの使用を人々に教えているのですか。
for (int i = 0; i < 42; i++)
いいえ
for (int i = 0; i < 42; ++i)
私の推測では、いくつかの中世の言語には i++ のみが実装されていて ++i は実装されていないため、これらの言語に慣れている人々は反復子をインクリメントする方法にとどまっていると思いますが、この規則がどこから来たのかを知りたいと思っています。