据说:
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{}
Run Code Online (Sandbox Code Playgroud)
我确实理解内置类型的前/后增量int等差别,但就迭代器而言,这里++iter和之间有什么区别iter++?(请记住,我知道两者都会产生相同的结果).
++iter最有可能是更快,但从不慢iter++.
实现后增量运算符iter++需要生成一个额外的临时(在原始iter递增时返回此临时值++)而不是实现后增量运算符++iter,所以除非编译器可以优化(是的,它可以)后增量,++iter否则很可能是快于iter++.
鉴于上述情况,总是优选++iter在循环条件下使用.
不同之处在于它们不会产生相同的结果,而无论使用何种增量形式,此特定示例都会产生相同的结果。预自增形式是先对值进行自增,然后返回;而后自增形式则对结果进行自增,但返回自增之前的值。对于基本类型来说,这通常是免费的,但对于迭代器之类的东西,它需要创建一个临时值来保存非增量值,以便稍后返回。
| 归档时间: |
|
| 查看次数: |
4896 次 |
| 最近记录: |