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/