对于
for(T i=0;i<n;i++)
for(T i=0;i<n;++i)
这两种写法,如果T是基本数据类型比如int,则两种写法没有性能差异。
如果T是一个类,则++i效率更高,原因如下:
class SomeNum
{
int i;
public:
SomeNum operator++() // ++i
{
i = i + 1;
return *this;
}
SomeNum operator++(int) // i++
{
SomeNum copy(*this);
i = i + 1;
return copy;
}
};
“The post-fix operator often makes a copy of the current object. It's simply an extra step which may be expensive if you have a big class.”
对于自定义的数据类型,前置形式的操作符不需要生成临时对象,
而后置形式的操作符需要生成一个当前对象的拷贝,若当前对象所属的类较大,则拷贝这一步操作也将带来较大的开销。