欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL ++iter与iter++区别

程序员文章站 2022-05-27 22:58:49
...

 

 之前编码一直用的是iter++,同事说该方式效率比较低。带着疑惑看STL源码:

 

// vector

_Myiter& operator++()
	{	// preincrement
	++*(_Mybase *)this;
	return (*this);
	}

_Myiter operator++(int)
	{	// postincrement
	_Myiter _Tmp = *this;
	++*this;
	return (_Tmp);
	}

 

果不其然,++iter 前向表达式返回引用,而iter++返回的却是一临时对象。

原来前向后向重载表达式的差异,只是多了一个int参数。

 

// Test
class Test
{
public:
        Test():val(0){}
        ~Test(){}

        Test &operator++()
        {
                ++val;
                printf("Pre incr val:%d\n", val);
                return (*this);
        }

        Test operator++(int)
        {
                Test pTmp = *this;              // save
                val++;
                printf("Post incr val:%d\n", val);
                return pTmp;
        }

private:
        int val;
};

// main
int main()
{
        Test test;
        test++;
        ++test;
        return 0;
}

 

输出:

Post incr val:1

Pre incr val:2

 

 

 

 

相关标签: STL 迭代器