主要在于理解容器适配器的设计模式
反向迭代器厉害之处在于:你给我一个正向迭代器,我就给你一个反向迭代器
不同的容器提供了不同的正向迭代器
所有的迭代器,逻辑都是相同的。只是各自对应的类型不一样
而所有的反向迭代器的行为,只和正向有区别,就是++和--的方向相反
所以,可以使用模板,实例化为对应适配器的正向迭代器
你传list的迭代器,我生成list的反向迭代器
你传vector的迭代器,我生成vector的反向迭代器
这其中,只需要修改操作符重载++和--的方向即可
怎么实现?
再设计一个类Reverseiterator,这个类的参数为iterator
也就是使用原来的类的正向迭代器来复用实现反向迭代器
++变--
--变++
STL设计的时候,设计为rebegin位置在end位置(和begin、end对称),解引用时,要向前一个位置
迭代器在性质上分类:
单向(单链表forward_list)
双向(双向链表list)
随机(支持随机访问,有+-,vector/deque)
功能上的分类:
正向
反向
const
现在要做的,是用iterator封装reverse
也就是其他东西都不变,变得只是行为
改了一个名字,但是内核还是原来的迭代器
怎么做?可以用typedef