运算符重载中 类定义的对象前置的++可以输出,后置++输出不了,请问是为什么啊?
c++
#include <iostream>
#include <string>
using namespace std;
class my_integer
{
friend ostream& operator<< (ostream& cout, my_integer& i);
public:
my_integer()
{
m_num = 0;
}
my_integer& operator++ ()
{
this->m_num++;
return *this;
}
my_integer operator++ (int)
{
my_integer temp = *this;
m_num++;
return temp;
}
private:
int m_num;
};
ostream& operator<< (ostream& cout, my_integer& i)
{
cout << "m_num: " << i.m_num;
return cout;
}
void test01()
{
my_integer i;
cout << ++i<< endl;
cout << i << endl;
}
void test02()
{
my_integer j;
cout << j++ << endl; // 为什么输出不了j++啊???
cout << j << endl;
}
int main()
{
test01();
test02();
system("pause");
return 0;
}
```****
平常我们会遇到一些对数组进行维护查询的操作,比较常见的如,修改某点的值、求某个区间的和,而这两种恰恰是树状数组的强项!当然,数据规模不大的时候,对于修改某点的值是非常容易的,复杂度是O(1),但是对于求一个区间的和就要扫一遍了,复杂度是O(N),如果实时的对数组进行M次修改或求和,最坏的情况下复杂度是O(M*N),当规模增大后这是划不来的!而树状数组干同样的事复杂度却是O(M*lgN),别小看这个lg,很大的数一lg就很小了,这个学过数学的都知道吧,不需要我说了。申明一下,看下面的文章一定不要急,只需要看懂每一步最后自然就懂了。