STL——increment/decrement/dereference操作符
increment/dereference操作符在迭代器的实现上占有非常重要的地位,因为任何一个迭代器都必须实现出前进(increment,operator++)和取值(dereference,operator*)功能,前者还分为前置式(prefix)和后置式(Postfix)两种。有写迭代器具备双向移动功能,那么就必须再提供decrement操作符(也分前置式和后置式),下面是一个例子:
#include<iostream> using namespace std; class INT { friend ostream& operator<<(ostream& os,const INT& i); public: INT(int i):m_i(i){} INT& operator++() { ++(this->m_i); return *this; } const INT operator++(int) { INT temp=*this; ++(*this); return temp; } INT& operator--() { --(this->m_i); return *this; } const INT operator--(int) { INT temp=*this; --(*this); return temp; } int& operator*() const { return (int&)m_i; } private: int m_i; }; ostream& operator<<(ostream& os,const INT &i) { os<<'['<<i.m_i<<']'; return os; } int main() { INT I(5); cout<<I++; cout<<++I; cout<<I--; cout<<--I; cout<<*I; }
运行结果: