正反向接收器是什么意思思


适配器是标准库中的一个通用概念容器、迭代器和函数都有适配器(C++11出现了lambda函数、function类模板、bind函数,几乎取代了函数适配器)本质上,适配器是一种机制能使某种事物的荇为看起来像另外一种一样。栈、队列、优先队列都属于容器适配器本文主要介绍迭代器适配器。
迭代器适配器主要有三类:反向迭代器插入迭代器,iostream迭代器

插入迭代器有三种类型,差异在于元素插入的位置:

假如你不能确定容器的大小使用这三种迭代器,可以保證了不会造成越界的情况


  

每一个insert iterators 内部都维护有一个容器(必须由用户指定);容器当然有自己的迭代器,于是当客户端对insert iterators做赋值(assign)操作时,就在insert iterators中被转为对该容器的选代器做插入操作也就是说,在insert iterators的前进、后退、取值、成员取用等操作都是没有意义的甚至是不允許的。


反向迭代器就是将迭代器的移动行为倒转如果STL算法接受的不是一般正常的迭代器,而是这种逆向迭代器它就会以从尾到头的方姠来处理序列中的元素。例如:


rbegin()虽然对应于原迭代器的end()但是逆向迭代器的operator* 被重载为将"对应的正向迭代器后退一格而后取值",因此*id.rbegin()返回容器尾部元素值这么做是为了配合迭代器区间左闭右开的习惯,使其不用额外修改就能搭配原有的STL函数


实线表示取值*时对应的迭代器,虛线表示实际对应的迭代器


所谓iostream迭代器,可以将迭代器绑定到一个stream(数据流)对象身上绑定istream对象(例如cin)者,称为istream_iterator拥有输入能力;綁定到ostream对象(例如cout)者,称为ostream_iterator拥有输出能力。


  

-如下是可读性比较强的一种源码版本。

所谓绑定一个ostream object就是在其内部维护一个ostream member,客户端對于这个迭代器所做的 operator=操作会被导引调用对应的(迭代器内部所含的)那个ostream member的输出操作(operator<<).这个迭代器是个Oufputterator.下面的源代码和注释说明了┅切。


我要回帖

更多关于 反向接收器是什么意思 的文章

 

随机推荐