STL的反向迭代器
反向迭代器reverse_iterator是一种反向遍历容器的迭代器,也就是从最后一个元素到第一个元素遍历容器。反向迭代器的自增(或自减)的含义反过来了:对于反向迭代器,++运算符将访问前一个元素,–运算符将访问下一个元素。
在某些场景下,reverse_iterator能很好地适应应用需求。但容器的有些成员方法只支持iterator,如果你想在反向迭代器所指的位置插入一个新元素,或者是删除反向迭代器所指的元素是不行的,因为insert方法、erase方法都不支持reverse_iterator。要完了这些操作,必须将reverse_iterator转换成iterator,再用iterator完成这些操作。
下面说明了反向迭代器与迭代器的关系,并列举了一些常用的操作。
反向迭代器与迭代器的转换
reverse_iterator与iterator都继承自_Iterator_base,它们是可以相互转换的。
- 调用reverse_iterator的base()方法可以获取”对应的”iterator。
- 可以用iterator构造一个”对应的”reverse_iterator。
- end()与rbegin()、begin()与rend()、rit与rit.base()并不是指向同一个位置。
- 反向迭代器rit总是指向rit.base()的前一个位置。
- 反向迭代器标记的区间[rbegin(),rit)与迭代器标记的区间[rit.base(),end())是相同的。