2
for (string::size_type ix = 0; ix != str.size(); ++ix)

C ++のループ内の!=代わりに使用しないのはなぜですか?<

4

4 に答える 4

4

why not use != instead of < in loop for C++?

これにより、見つけにくいバグが発生することがあります。10 未満の奇数を出力したい場合!=は、正しい選択ではありません。次のループは永久に実行されます。

for (int i=1; i!=10; i+=2)
{
     cout << i << endl;
}
于 2013-05-29T05:47:26.003 に答える
4

ほとんどの場合、好みの問題です。構文は通常、「ix が (値) do (action) と等しくなく、ix をインクリメントし続ける」という意味の人間が読める形式であると見なされます。!=これが、「等しくない」という考慮事項を直接「翻訳」するようにタイプされることが多い理由です。

ほとんどのループでは、どちらを使用してもかまいませんが、<代わりに使用!=すると、オーバーフロー エラーが発生する可能性が減るという考慮事項があります。

for(int i = 0; i != 25; i += 2)

この場合、ループが終了しないことは明らかですが、25or2が別のソースからのものである場合は終了しない可能性があります。したがって<、予防習慣として一貫して使用することをお勧めします。

于 2013-05-29T05:29:28.103 に答える
1

!=整数インデックスではなく反復子を使用する場合は、イディオムが必要です。イテレータを頻繁に使用すると、習慣になります。

于 2013-05-29T05:57:46.547 に答える