假设我有一个需要检查变量i是否大于零的程序。由于i始终为正,因此说i>0等价于i!=0。
这两个表达式之间是否存在性能差异,为什么?
我知道这两者在性能上没有明显的区别,这更是一个哲学问题。
这两个表达式之间是否存在性能差异,为什么?
我知道这两者在性能上没有明显的区别,这更是一个哲学问题。
我认为这并没有什么可测量的差异,但与普遍的智慧相反,我会建议您使用!=
而不是>
或<
,因为前者是一种更通用的操作,如果您要将代码转换为C++并使用迭代器而非指针,则并非所有迭代器都支持<
或>
(但它们都支持!=
)。
!=
可以与前向迭代器一起使用,但不能处理步长大于1的情况。 <
可用于大步长,但仅适用于随机访问迭代器。哪种方法更好取决于具体上下文。 - Ben Voigtwhile (end - it > stride)
进行测试,而不是while (it + stride < end)
. - Ben Voigti + 2 == v.end()
时,你接着执行 i += 2
使得 i = v.end()
并测试 v.end() + 2 <= v.end()
,因此 UB)。 - Ben Voigt