まだ誰も思いついていないように思える別の答えがあります。 forシーケンスを反復処理する必要がある場合は、ループを使用する必要があります。使用!=は、ループの終了条件を記述する最も簡潔な方法です。ただし、制限の少ない演算子を使用することは、非常に一般的な防御プログラミングのイディオムです。整数の場合、それは重要ではありません-より具体的な例のない単なる個人的な選択です。!=他の人が述べた理由で、使用したいイテレータでコレクションをループします。floatまたはのシーケンスを検討する場合、すべてのコストdoubleを回避する必要!=があります。
私が指摘したいのはfor、シーケンスを繰り返す必要があるときに使用されることです。生成されたシーケンスには、開始点、間隔、および終了条件があります。これらは、forステートメント内で簡潔に指定されています。(1)のステップ部分が含まれていない、forまたは(2)trueガード条件として何かを指定している場合は、forループを使用しないでください!
whileループは、特定の条件が満たされている間、処理を継続するために使用されます。 シーケンスを処理していない場合は、while代わりにループが必要です。ガード条件の引数はここでは似ていますが、a whileとforループの決定は非常に意識的なものでなければなりません。whileIMO C ++サークルに理解下ループです。
アイテムのコレクションを処理している場合(非常に一般的なfor-loopの使用法)、実際にはより特殊な方法を使用する必要があります。残念ながら、std::for_eachC ++ではいくつかの理由でかなり苦痛です。多くの場合、forループの本体を独立した関数で分離すると(多少痛みを伴いますが)、結果としてよりクリーンなソリューションになります。 コレクションで作業する場合、検討するstd::for_each、std::transformまたはstd::accumulate。 この方法で表現すると、多くのアルゴリズムの実装が簡潔で明確になります。言うまでもなく、ループの本体を別の関数/メソッドに分離すると、アルゴリズム、その入力要件、および結果に専念することになります。
Java、Python、Ruby、またはC ++ 0xを使用している場合は、適切なコレクションforeachループを使用する必要があります。C ++コンパイラがこの機能を実装forすると、これらの種類の議論と同様に、多くのループがなくなります。
int i = 10; while(i --> 0) { /* stuff */ }