美文网首页
iterator迭代器前加和后加运行效率

iterator迭代器前加和后加运行效率

作者: 九楼记 | 来源:发表于2022-03-20 22:23 被阅读0次

《More effective C++》有详细说明

概念

前加:++i
后加:i++

说明

代码实现:

//普通类型
Object& operator++() {
  ++(*this);
  return *this;
}
const Object operator++(int) {
  Object temp = *this;
  ++(*this);
  return temp;
}

这里思考一下,为什么返回值时const类型?

//迭代器类型
iterator & operator++()
{   // 前增
    ++*this;
    return (*this);
}

iterator operator++(int)
{   // 后增
    iterator temp = *this;
    ++*this;
    return (temp);
}

从上述代码,我们可以看出前加++和后加++,有4点不同:

  • 返回类型不同
  • 形参不同
  • 代码不同
  • 效率不同

因为前加和后加的函数重载相同,这样就有一个语法问题,函数重载的区别决定于它们的参数类型上的差异,但是都只有一个参数,所以为了解决这个问题,C++规定后加参数增加一个int,当函数调用时,编译器传递一个0作为int参数的值给该函数。

注:我们只要重载++时,只要认清前置++是没有参数的,后置++是有一个int型参数的就行了,实际调用的区分是编译器的事!

reference

[1] https://zhuanlan.zhihu.com/p/42936185
[2] https://www.cnblogs.com/balingybj/p/4736195.html

相关文章

网友评论

      本文标题:iterator迭代器前加和后加运行效率

      本文链接:https://www.haomeiwen.com/subject/ariadrtx.html