Iterator adapter

Iterator Adapter 继承了通用iterator的接口,但是实现特定的业务逻辑。

C++ STL 提供了三种类型的iterator adapters:

1. Insert iterators

Insert iterators 使algorithms 以insert的模式工作,而非overwrite, 比如在copy 算法中,应用insert iterators 我们可以不用care 目标container的空间长度增加需求。

有三种insert iterators 根据插入的位置:

1> back_inserter, 尾部插入

只能用于提供了push_back()成员函数的容器,比如vector, deque和list.

2> front_inserter,前端插入

只能用于提供了push_front的成员函数的容器,比如deque和list.

3> inserter, 给定位置插入

直接将元素(elements)插入到给定位置的前面,例如:

source collection: 1 , 2 ,3 ,4

position = 3.

insert collection: 8,9

result: 1,2,8,9,3,4,(而非1,2,3,8,9,4)

inserter实际上调用对应容器的insert成员函数,因为所有预定义的容器都实现了insert()成员函数,所以这是唯一支持关联容器(associative containers)的预定义的inserter ,当然也支持顺序容器(sequence containers).但是要注意的是我们不能把元素插入到

关联容器的指定位置,因为对于关联容器,元素的位置是由其值来决定的。比如set, 我们用inserter把4插入到1,2,3,5的3前面,得到的新

序列是1,2,3,4,5,而不是我们期望的1,2,4,3,5

 

2. Stream iterators

i.e. ostream_iterator 和istream_iterator.

3. Reverse iterators

i.e. reverse_iterator.

如下代码做了同样的操作,即反向输出coll中的元素

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值