只有在必要时才使用后置操作符
因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于int对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大代价。因此,养成使用前置操作这个好习惯,就不必担心性能差异的问题。
这个问题是分两种情况的:
1、对于内置数据类型,以现在的编译器的优化水平,前++和后++没区别的,这个可以通过看汇编代码证明
2、对于自定义数据类型,像STL,前++的效率要高于后++,所以STL中关于iterator都是前++的
简单的说:
i++(在c++中)在实现的时候,系统会产
生了一个local object class INT;
1 //++i 2 INT INT::operator++() 3 { 4 *this=*this+1; 5 return *this; 6 } 7 8 //i++ 9 const INT INT::operator ++(int) 10 { 11 INT oldvalue=*this; 12 *this=*this+1; 13 return oldvalue 14 }
所以从效率上来说:++i比i++来的更有效率