【发布时间】:2011-12-31 23:36:09
【问题描述】:
这两个for语句我都见过:
for(i=0;i<10;i++)
for(i=0;i!=10;i++)
我知道当我到达 10 时它们都会停止,但使用第二个似乎更好(我听说)。
有什么不同?我也想知道什么时候使用迭代器访问向量的成员,迭代器条件< vec.end()和!= vec.end()有什么区别
【问题讨论】:
-
只是为了说明,在 for 循环中,
++i优于i++,因为第二个存储了i的前一个值,而第一个没有。 -
@PaulManta:我认为大多数现代编译器都能够找出未使用的中间值并将其优化掉。
-
@BrendanLong:对于原始类型,它可以。对于迭代器,
++i将 至少 一样快,也许更快。 -
@arne 是的,现代编译器通常会这样做......但是“通常”部分让我感到困惑。 :) 总是把它写成
++i并且不依赖编译器来优化它并不像我花费任何代价。 -
@PaulManta:那是完全不同的故事;)我通常也写
++i,这样我的代码看起来都是一样的,不管i是什么类型。
标签: c++ loops for-loop conditional-statements