织梦网站地图在线生成,太原搜索引擎优化,如何快速进行网站开发,wordpress标签页面跳转反向迭代器的实现与 stack 、queue 相似#xff0c;是通过适配器模式实现的。通过传入不同类型的迭代器来实现其反向迭代器。
正向迭代器中#xff0c;begin() 指向第一个位置#xff0c;end() 指向最后一个位置的下一个位置。
代码实现#xff1a;
templateclass I…反向迭代器的实现与 stack 、queue 相似是通过适配器模式实现的。通过传入不同类型的迭代器来实现其反向迭代器。
正向迭代器中begin() 指向第一个位置end() 指向最后一个位置的下一个位置。
代码实现
templateclass Iterator, class Ref, class Ptr
struct ReverseIterator
{typedef ReverseIteratorIterator, Ref, Ptr Self;ReverseIterator(Iterator it):_it(it){}Ref operator*(){return *_it;}Ptr operator-(){return (operator*());}Self operator(){--_it;return *this;}Self operator--(){_it;return *this;}bool operator!(const Self s){return _it ! s._it;}bool operator(const Self s){return _it s._it;}Iterator _it;
};
以 list 为例其封装反向迭代器为
templateclass T
class list
{typedef list_nodeT Node;
public:typedef list_iteratorT, T, T* iterator;typedef list_iteratorT, const T, const T* const_iterator;typedef ReverseIteratoriterator, T, T* reverse_iterator;typedef ReverseIteratorconst_iterator, const T, const T* const_reverse_iterator;iterator begin(){return _head-_next;}iterator end(){return _head;}const_iterator begin() const{return _head-_next;}const_iterator end() const{return _head;}reverse_iterator rbegin(){return reverse_iterator(--end());}reverse_iterator rend(){return reverse_iterator(end());}const_reverse_iterator rbegin() const{return const_reverse_iterator(--end());}const_reverse_iterator rend() const{return const_reverse_iterator(end());}private:Node* _head;size_t _size;
};