为何迭代器前置式递增比后置式递增效率要高

来源:互联网 发布:淘宝淘抢购报名容易吗 编辑:程序博客网 时间:2024/05/22 03:44

后置式需要一个额外的临时对象,因为它必须存放迭代器的原本位置并将它返回。所以一般使用++itr,而不要使用itr++。


前置及后置代码实现:

#include <iostream>using namespace std;class UPInt {public:UPInt& operator++();// 前置式声明const UPInt operator++(int);// 后置式声明UPInt& operator+=(int);UPInt():value(0) {}public:int value;};UPInt& UPInt::operator+=(int i){value += i;return *this;}// 前置式实现UPInt& UPInt::operator ++(){*this += 1;return *this;}// 后置式实现const UPInt UPInt::operator ++(int){UPInt oldValue = *this;// 对原值进行了复制,性能较差++(*this);return oldValue;}int _tmain(int argc, _TCHAR* argv[]){UPInt up;cout << up.value << endl;cout << (up++).value << endl;cout << (++up).value << endl;return 0;}


0 0