我已经看到了这两个语句:
for(i=0;i<10;i++)
for(i=0;i!=10;i++)
我知道当我到达10
时,它们都停止了,但使用第二个似乎更好(我听说)。我还想知道在使用迭代器访问向量的成员时,迭代器条件< vec.end()
和!= vec.end()
有什么不同
发布于 2011-11-18 14:15:21
for(i = start; i != end; ++i)
这是“标准”迭代器循环。它的优点是可以同时使用指针和标准库迭代器(您不能依赖定义了operator<
的迭代器)。
for(i = start; i < end; ++i)
这不适用于标准库迭代器(除非它们定义了operator<
),但它的优点是,如果出于某种原因超过end
,它仍然会停止,所以它稍微安全一些。我被教导在迭代整数时使用这种方法,但我不知道这是否真的被认为是“最佳实践”。
我通常更倾向于使用<
来编写这些代码。
发布于 2011-11-18 14:15:09
这两种方法在大多数情况下都有效。
如果由于某种原因,在循环中执行的代码体将i
更改为大于10
的值,则第一个版本将停止循环,但第二个版本将永远执行。
发布于 2011-11-18 14:47:10
我的日常实践是在使用简单类型(如整数)迭代循环时使用<
,在使用stl类迭代器时使用!=
https://stackoverflow.com/questions/8178463
复制相似问题