for (string::size_type ix = 0; ix != str.size(); ++ix)
C ++のループ内の!=
代わりに使用しないのはなぜですか?<
why not use != instead of < in loop for C++?
これにより、見つけにくいバグが発生することがあります。10 未満の奇数を出力したい場合!=
は、正しい選択ではありません。次のループは永久に実行されます。
for (int i=1; i!=10; i+=2)
{
cout << i << endl;
}
ほとんどの場合、好みの問題です。構文は通常、「ix が (値) do (action) と等しくなく、ix をインクリメントし続ける」という意味の人間が読める形式であると見なされます。!=
これが、「等しくない」という考慮事項を直接「翻訳」するようにタイプされることが多い理由です。
ほとんどのループでは、どちらを使用してもかまいませんが、<
代わりに使用!=
すると、オーバーフロー エラーが発生する可能性が減るという考慮事項があります。
for(int i = 0; i != 25; i += 2)
この場合、ループが終了しないことは明らかですが、25
or2
が別のソースからのものである場合は終了しない可能性があります。したがって<
、予防習慣として一貫して使用することをお勧めします。
!=
整数インデックスではなく反復子を使用する場合は、イディオムが必要です。イテレータを頻繁に使用すると、習慣になります。