stl 迭代器配接器

来源:互联网 发布:python 自然语言分析 编辑:程序博客网 时间:2024/05/15 23:51

c++标准程序库提供了数个预先定义的特殊迭代器,称为迭代器配接器(iterator adapters)。它们起辅助作用,可以赋予迭代器更强大的能力。

1. Insert Iterators(安插型迭代器)

STL预定义了三种insert iterators:

(1)Back inserters

Back inserters内部调用push_back(),在容器尾端插入元素。只有支持push_back()的vector、deque、list可以使用Back inserters。

(2)Front inserters

Front inserters内部调用push_front(),在容器前端插入元素。只有支持push_front()的deque、list可以使用Front inserters。

(3)General inserters(一般性迭代器)

General inserters内部调用insert(),将元素插入到pos所指位置的前方。所有STL容器都提供insert()成员函数,所以这是唯一可用于关联式容器的预定义inserter。

在关联式容器中,元素全部已序,新元素的插入位置由排序位置决定,pos参数只是一个提示,帮助确定从什么地方开始搜寻正确的插入位置。如果提示不正确,效率上的表现会比“没有提示”更糟糕。

对于insert iterators,“单步前进(step forward)”没有任何效果,它是一个no-op。

2. Stream Iterators(流迭代器)

用于读写stream。

这段程序只用三个语句就完成了一系列工作:从标准输入读取所有输入文字,排序,输出到屏幕。

(1)istream_iterator<string>(cin)

这是一个从cin读取string型别数据的stream iterator,内部采用cin >> string进行“逐词读取”(因为>> string遇到空格终止一次持续读取)。

(2)istream_iterator<string>()

调用istream_iterator的default构造函数,产生一个代表“流结束符号”(end-of-stream)的迭代器。

(3)ostream_iterator<string>(cout,”\n”)

产生一个output stream iterator,通过operator<<向cout写入strings,参数\n作为元素之间的分隔符。

3. Reverse Iterators(逆向迭代器)

以逆向方式进行所有操作。它将increment运算转换为decrement运算,反之亦然。所有容器都可以通过成员函数rbegin()、rend()产生reverse iterators。

0 0
原创粉丝点击