美文网首页
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