C++ 头文件系列(iterator)(2)

随机访问迭代器支持算数运算,故使用“+”和“-”操作符进行运算(若两个迭代器分别为first和last,则计算他们之间的距离只需要last - first)。

单向迭代器只支持递增运算,故使用++运算符进行运算(若两个迭代器分别为first和last,计算他们之间的距离需要重复对first进行递增,知道first == last)

迭代器适配器 类

标准库包含了三种迭代器适配器:

Reverse iterator:这种迭代器对元素进行反向迭代。 注意,当从某个迭代器构造出reverse iterator时,新的迭代器不再指向先前的元素,而是指向前一个元素(按旧迭代器的顺序),因为end iterator逆转过来才是begin iterator。

C++ 头文件系列(iterator)

Insert iterator:通过迭代器进行元素的插入时,操作略有不同。 指针通常是指向已有的内存,因此迭代器一般也只是对指向地址的元素进行赋值;而插入元素是需要先分配内存,再赋值。 为了能让使用者像使用一般迭代器那样进行元素的插入,标准库提供了3种插入迭代器

back_insert_iterator

front_insert_iterator

insert_iterator

Move iterator:移动迭代器会将内部的迭代器的操作返回值全部转换成右值(rvalue)。

生成函数(Generators)

back_inserter

front_inserter

inserter

make_move_inserter

这些都是全局模版函数,利用类型推导帮助用户构造上述的三种迭代器适配器。

流迭代器

输入输出一直是语言非常重要的部分,对于C++迭代器来说,操纵流(stream)中数据的输入输出的重要性毋庸置疑。 Stream Iterator则是针对stream的一套迭代器,包括istream,ostream,istreambuf 和 ostreambuf。

以下两种是input iterator:

istream_iterator

istreambuf_iterator

以下两种是output iterator:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e009d1beb86f0105a4d55814ef955d46.html