c++ -++i 或 i++ 在 for 循环中??

标签 c++ for-loop post-increment pre-increment

Possible Duplicate:
Is there a performance difference between i++ and ++i in C++?

是否有一些程序员在普通的 for 循环中编写 ++i 而不是编写 i++ 的原因?

最佳答案

++i 由于其语义,效率略高:

++i;  // Fetch i, increment it, and return it
i++;  // Fetch i, copy it, increment i, return copy

对于类似 int 的索引,效率增益是最小的(如果有的话)。对于迭代器和其他重量较重的对象,避免该拷贝可能是一个真正的胜利(特别是如果循环体不包含太多工作)。

例如,考虑下面的循环,它使用理论上的 BigInteger 类提供任意精度整数(以及某种类似 vector 的内部结构):

std::vector<BigInteger> vec;
for (BigInteger i = 0; i < 99999999L; i++) {
  vec.push_back(i);
}

该 i++ 操作包括复制构造(即操作符 new,逐位复制)和破坏(操作符删除)循环,除了本质上再制作索引对象的一个​​拷贝之外,它不会做任何事情。从本质上讲,您只需使用前缀就足够的后缀增量,就可以将要完成的工作加倍(并且很可能会增加内存碎片)。

关于c++ -++i 或 i++ 在 for 循环中??,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4261708/

相关文章:

php - 多个值的递增运算符

c++ - GCC编译器一个字节有多少位数

Android Proguard Release导致不执行for-loop

c++ - 在 C++ 中转换为 const

java - 我怎样才能在java中迭代这两个循环?

for-loop - Stata——提取循环运行的 3500 个回归的回归输出

c - C 中的后递增运算符

c - 函数参数中预增量和后增量的操作顺序?

c++ - MoveWindow - 设置最小宽度/高度?

c++ - 如何检测按下屏幕的压力?