STL迭代器:前缀增量更快?

daf*_*rad 6 c++ stl

可能重复:
在C++中预增量比后增量更快 - 是吗?如果是的话,为什么呢?
在C++中i ++和++ i之间是否存在性能差异?

我被告知,当使用STL和它的迭代器时,我应该总是使用++iter而不是iter++.

我引用:

因为它只能更快,从不慢

这是真的?

AnT*_*AnT 11

是.一般来说都是如此.后缀增量负担保留和返回迭代器的值的任务.这需要时间和精力,这通常会使它变慢.

对于实现传统前/后语义的所有重载增量/减量运算符通常都是如此.

这个话题被打败了.在这里搜索"prefix postfix"以获取大量更详细的解释.

  • "不快"不需要"一般".后增量并不快.后增量通常较慢. (5认同)
  • 一个好的优化器通常可以删除旧值的复制,特别是如果不使用它.所以"慢"应该"不快". (2认同)

G-7*_*-71 7

你可以在这个例子中看到创建了一个temp,在postfix中...这比前缀慢,其中没有创建高级对象

// Define prefix increment operator.
Point& Point::operator++()
{
   _x++;
   _y++;
   return *this;
}

// Define postfix increment operator.
Point Point::operator++(int)
{
   Point temp = *this;
   ++*this;
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

++ iter比iter ++更快,因为不创建对象的副本


归档时间:

查看次数:

5213 次

最近记录:

9 年,1 月 前