C++中的前后递增/递减运算符在循环中是否具有相同的性能?

aJ.*_*aJ. 1 c++ for-loop

考虑以下两个例子.

class ClassOne
{
 //class definition is here
};

std::vector< ClassOne > myListOfObjects;

std::vector< ClassOne >::const_iterator iter = myListOfObjects.begin();

Example 1: 
for( ; iter < myListOfObjects.end(); **++iter**)
{
   //some operations
}

OR

Example 2: 
for( ; iter < myListOfObjects.end(); **iter++**)
{
   //some operations
}
Run Code Online (Sandbox Code Playgroud)

哪一个更快?循环上下文中的++ iter或iter ++.

原因关闭:

从Brian的帖子复制(使问题更简洁).

您也可以尝试以下类似问题之一:此处此处,此处此处.

fro*_*h42 7

不,他们没有相同的表现:

  • Postincrement将创建一个副本然后递增,然后返回副本
  • 预增量将增加然后返回原始

所以(除非你处理像int这样的简单事情)preincrement更快.


Rya*_*ham 5

本回答所述,pre更快.当你处理原语(int,char等)时它们是相同的.在这种情况下,他们正在调用重载运算符.