要想让自己的数据结构支持给予范围的for循环就要实现迭代器
而迭代器实际上就是一个指向数据成员的类似指针的东西
所以我们可以用一个类来实现迭代器只要类的内部成员是一个指向数据成员的指针就行
例如
template<class T, class Ref, class Ptr>
class reverse_ListIterator
{
typedef ListIterator<T, Ref, Ptr> node;
typedef reverse_ListIterator<T, Ref, Ptr> Self;
public:
reverse_ListIterator(node pNode = nullptr);
reverse_ListIterator(const Self& l);
//private:
node _pNode;
};
我们可以这样声明迭代器的类型
这是一个反向迭代器
随后我们只要实现对于迭代器所支持的操作就行了
reverse_ListIterator(node pNode = nullptr);
reverse_ListIterator(const Self& l);
T& operator*();
T* operator->();
Self& operator++();
Self operator++(int);
Self& operator--();
Self& operator--(int);
bool operator!=(const Self& l);
bool operator==(const Self& l);
例如以上的这些函数