《C++ Primer》--学习10

反向迭代器

 

反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器,递增一个反向迭代器会移动到前一个元素

反向迭代器需要递减运算符

我们只能从既支持++也支持--的迭代器来定义反向迭代器,除了 forward_list 外的标准容器都支持

流迭代器不支持递减运算,因此,不可能从一个 forward_list 或一个流迭代器创建反向迭代器

反向迭代器和其他迭代器间的关系

直接使用反向迭代器会向着流的前端移动,要是想让他向后就需要转换一下,转换为普通的迭代器

泛型算法结构

任何算法的最基本的特性是它要求其迭代器提供哪些操作

算法所要求的迭代器操作可以分为5个迭代器类别

 5 类迭代器

 算法形参模式

大多数算法具有如下4种形式:

 其中 alg 是算法的名字,beg 和 end 表示算法所操作的输入范围。dest,beg2 和 end2 ,都是迭代器参数,如果用到了这些迭代器参数,它们分别承担指定目的位置和第二个范围的角色。除了这些迭代器参数,一些算法还接受额外的,非迭代器的特定参数

接受单个目标迭代器的算法

dest 参数是一个表示算法可以写入的目的位置的迭代器。算法假定:按其需要写入数据,不管写入多少个元素都是安全的

接受第二个输入序列的算法

算法命名规范

一些算法使用重载形式传递一个谓词

 _if 版本的算法

 区分拷贝元素的版本和不拷贝的版本

默认情况下,重排元素的算法将重排后的元素写回给定的输入序列中。这张算法提供了另一个版本,将元素写到一个指定的输出目的位置。写到额外的目的空间的算法都在名字后面附加了一个_copy 

 特定容器算法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值