5.4.1  逆向型迭代器

5.4.1 逆向型迭代器

逆向型迭代器(Reverse Iterator)是一种配接器,用于重新定义递增运算和递减运算,使其行为正好倒置。程序执行时,算法以逆序次序来处理元素。所有标准容器都允许使用逆向型迭代器来遍历元素。下面举例说明。

例5-1

978-7-111-51399-5-Chapter05-7.jpg

978-7-111-51399-5-Chapter05-8.jpg

例5-1的执行效果如图5-2所示。

978-7-111-51399-5-Chapter05-9.jpg

图5-2 例5-1的执行效果

在例5-1中,容器的成员函数rbegin()和rend()会分别传回一个逆向迭代器,就像be- gin()和end()的返回值一样,共同定义出一个半开区间。其中rbegin()函数传回逆向遍历第一元素的位置,即实际最后一个元素的位置;rend()函数传回逆向遍历时最后一个元素的下一个位置,即第一个元素的前一个位置(已经不属于本容器了)。

通常的迭代器若具备双向移动的功能,则可以转化成一个逆向迭代器。例如,

978-7-111-51399-5-Chapter05-10.jpg

上述代码实现将正常迭代器转化为逆迭代器,并输出其值。

例5-2

978-7-111-51399-5-Chapter05-11.jpg

978-7-111-51399-5-Chapter05-12.jpg

例5-2的执行效果如图5-3所示。

978-7-111-51399-5-Chapter05-13.jpg

图5-3 例5-2的执行效果

逆向型迭代器类模板提供了一个base()成员函数。base()成员函数可以实现将逆迭代器类型的迭代器转化为正常迭代器。