首页 > 解决方案 > 在 for 循环终止条件中使用 < 或 !=

问题描述

给定一个向量v,我想遍历向量中的每个元素并执行需要当前索引的操作。

我已经看到了以这两种方式编写的基本 for 循环:

// Using "<" in the terminating condition
for (auto i = 0; i < v.size(); ++i)
{
    // Do something with v[i]
}

// Using "!=" in the terminating condition
for (auto i = 0; i != v.size(); ++i)
{
    // Do something with v[i]
}

有任何实际理由偏爱其中一个吗?我已经看到它<更频繁地使用,但是使用它有性能优势!=吗?

标签: c++performancefor-loopiteration

解决方案


有一个,尽管有点令人费解,有理由更<喜欢!=.

如果出于某种原因,您的 lop 的主体修改i并跳过了阈值,<仍然会终止循环,其中!=将继续迭代。

在绝大多数情况下它可能没有区别,但习惯<可能会阻止!=不会出现的错误。还有一个额外的优势,它非常小,但<需要更少的字符来编写,因此它使源文件更小。

同样,上述论点是一个笑话,但如果您需要一个论点来使用另一个论点,那么您就有了。


推荐阅读