33.2 迭代器适配器

在<iterator>中,标准库提供了适配器,能从一个给定的迭代器类型生成有用的相关迭代器类型:

iostream的迭代器将在38.5节中介绍。

33.2.1 反向迭代器

使用一个迭代器我们可以从b到e遍历一个序列[b:e)。如果序列允许双向访问,我们还可以逆序,即从e到b遍历序列。实现逆序遍历的迭代器称为reverse_iterator。一个reverse_iterator从序列末尾(由其底层迭代器定义)向序列起始位置进行遍历。为了获得一个半开区间,我们必须将b-1视为序列的尾后位置,将e-1视为起始位置,从而得到半开区间[e-1:b-1)。因此,一个反向迭代器与其底层迭代器之间的根本关系是:&*(reverse_iterator(p))==&*(p-1)。特别是,如果v是一个vector,v.rbegin()指向其尾元素v[v.size()-1]。考虑下面的序列:

使用reverse_iterator,序列会如下所示:

reverse_iterator的定义可能像下面这样: ...

Get C++程序设计语言(第4部分:标准库)(原书第4版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.