为什么不使用 < 而是 != 在循环中用于 C++?
why not use < but != in loop for c++?
for (string::size_type ix = 0; ix != str.size(); ++ix)
为什么不使用!=
代替<
在循环的c++ ?
这主要是一个偏好问题-语法通常被认为是人类可读的形式,意思是"当ix不等于(value) do (action)并保持ix递增"。这就是为什么它经常被输入!=
来直接"翻译"不相等"的考虑。
对于大多数循环,您使用哪个并不重要,但是要考虑使用<
而不是!=
可以减少发生溢出错误的机会,例如使用:
for(int i = 0; i != 25; i += 2)
虽然很明显在这种情况下循环将永远不会终止,但如果25
或2
来自其他来源,则可能不会终止。因此,最好始终使用<
作为预防习惯。
why not use != instead of < in loop for C++?
有时这会导致一些难以捕捉的bug。如果我想打印10以下的奇数,那么!=
不是正确的选择。下面的循环永远运行。
for (int i=1; i!=10; i+=2)
{
cout << i << endl;
}
当您使用迭代器而不是整数索引时,!=
习惯用法是必要的。如果你经常使用迭代器,它就会成为一种习惯。
您可以使用任何一种,在C中,我认为<
更常见。在c++中,STL增加了一个新的变化:
for(FooType::iterator i = foo.begin(); i != foo.end(); i++)
... do stuff ...
应该使用!=
,因为在某些(大多数)情况下,<
甚至不会为迭代器类型定义。所以你可能也想在非stl循环中使用!=
,只是为了保持一致性。
注:我通常使用<
,因为正如其他答案所说,这意味着你不能错过哨兵值。但这没什么大不了的;如果你意外地错过了哨兵,那么你已经有bug了。
相关文章:
- 用于C++中带有数组和指针的循环
- 并行用于C++17中数组索引范围内的循环
- 用于循环编译的 constexpr
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- 删除功能不适用于串行通信后多个循环中的多个实例
- C++ for 循环,用于反转数字 10 - 99
- C++用于循环跳过向量的元素?
- OpenMP 内部的函数调用用于循环
- C++11 基于范围的 for 循环,用于 std::list
- 循环中的线程 Runnin 用于对 c++ 中的数字求和
- 将 mmap 内存用于开销非常低的循环缓冲区
- 用于循环访问多个集合的数据结构
- 一个 2D 数组,并按行存储值.第一个循环用于行索引,第二个循环用于列索引
- Leetcode C++用于循环条件
- 相同的 for 循环适用于其他项目,但不适用于此项目。为什么?
- C++ 中用于二维数组的 for-each 循环
- 打开 MP 三用于减少的循环
- 虽然循环不适用于数组应用程序
- 用于增加 ASCII 值的循环
- 这种无操作 while 循环用于断言宏的原因是什么?