反向迭代器
反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器,递增一个反向迭代器会移动到前一个元素
反向迭代器需要递减运算符
我们只能从既支持++也支持--的迭代器来定义反向迭代器,除了 forward_list 外的标准容器都支持
流迭代器不支持递减运算,因此,不可能从一个 forward_list 或一个流迭代器创建反向迭代器
反向迭代器和其他迭代器间的关系
直接使用反向迭代器会向着流的前端移动,要是想让他向后就需要转换一下,转换为普通的迭代器
泛型算法结构
任何算法的最基本的特性是它要求其迭代器提供哪些操作
算法所要求的迭代器操作可以分为5个迭代器类别
5 类迭代器
算法形参模式
大多数算法具有如下4种形式:
其中 alg 是算法的名字,beg 和 end 表示算法所操作的输入范围。dest,beg2 和 end2 ,都是迭代器参数,如果用到了这些迭代器参数,它们分别承担指定目的位置和第二个范围的角色。除了这些迭代器参数,一些算法还接受额外的,非迭代器的特定参数
接受单个目标迭代器的算法
dest 参数是一个表示算法可以写入的目的位置的迭代器。算法假定:按其需要写入数据,不管写入多少个元素都是安全的
接受第二个输入序列的算法
算法命名规范
一些算法使用重载形式传递一个谓词
_if 版本的算法
区分拷贝元素的版本和不拷贝的版本
默认情况下,重排元素的算法将重排后的元素写回给定的输入序列中。这张算法提供了另一个版本,将元素写到一个指定的输出目的位置。写到额外的目的空间的算法都在名字后面附加了一个_copy
特定容器算法