C++:iterator 头文件详解

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 20:04   15   0

<iterator>


header

迭代器定义

一个迭代器可以是指向一定范围内的数组或者容器中的元素,具有在一定范围内数组进行迭代的操作集合(至少具有增量 ++ 能力和 dereference *运算符)。

迭代器最明显的形式是指针。指针可以指向数组中的元素,并可以使用运算符 ++ 迭代它们,但是也可能是其他种类的迭代器。例如,每个容器类型(例如list)具有一个特定的迭代器类型,旨在迭代其元素。

请注意,虽然指针是迭代器的一种形式,但并非所有迭代器都具有相同的指针功能;


迭代器类别

迭代器根据他们的功能分为五类:

Inputoutput 迭代器是最有限的迭代器类型:它们可以执行顺序单通道输入或输出操作。

Forward iterators 具有 input iterators 所有功能,并且如果它们不是常量迭代器也是 output iterators 的功能, 尽管它们仅限于迭代范围(前向)的一个方向. 所有 standard containers 至少支持前向迭代器类型。

Bidirectional iterators 就像 forward iterators 但也可以向后迭代。

Random-access iterators 实现了 bidirectional iterators 所有的功能, 并且还能够非顺序访问范围: 通过将迭代值应用于迭代器而不迭代其间的所有元素,可以直接访问远程元素。这些迭代器具有与标准指针类似的功能(指针是此类别的迭代器)。


迭代器类别的属性:

类别 特性 表达
所有类别 copy-constructible, copy-assignable and destructible X b(a);
b = a;
Can be incremented ++a
a++
Random Access Bidirectional Forward Input Supports equality/inequality comparisons a == b
a != b
Can be dereferenced as an rvalue *a
a->m
Output Can be dereferenced as an lvalue
(only for mutable iterator types)
*a = t
*a++ = t
default-constructible X a;
X()
Multi-pass: neither dereferencing nor incrementing affects dereferenceability { b=a; *a++; *b; }
Can be decremented --a
a--
*a--
Supports arithmetic operators + and - a + n
n + a
a - n
a - b
Supports inequality comparisons (<, >, <= and >=) between iterators a < b
a > b
a <= b
a >= b
Supports compound assignment operations += and -= a += n
a -= n
Supports offset dereference operator ([]) a[n]

其中 X 是迭代器类型,a 和 b 是此迭代器类型的对象,t 是迭代器类型指向的类型的对象,n 是整数值。

有关更多详细信息,请参阅 input iterator, output iterator, forward iterator, bidirectional iteratorrandom-access iterator.


功能

迭代器操作:

advance

迭代器向前推进

distance

返回两个迭代器之间的距离

begin

将迭代器返回到开头(增长方向:begin -> end)

end

将迭代器返回到结尾

prev

获取前一个元素的迭代器

next

获取下一个元素的迭代器


迭代器生成:

back_inserter

从尾部插入元素

front_inserter

从首部插入元素

inserter

从指定位置插入一段元素

make_move_iterator

Construct move iterator (function template )


iterator

迭代器基类

iterator_traits

迭代器特征


预定义的迭代器

reverse_iterator

反转迭代器

move_iterator

移动迭代器

back_insert_iterator

后插入迭代器

front_insert_iterator

前插入迭代器

insert_iterator

插入迭代器

istream_iterator

Istream迭代器

ostream_iterator

Ostream迭代器

istreambuf_iterator

输入流缓冲区迭代器

ostreambuf_iterator

输出流缓冲区迭代器


类别标签

input_iterator_tag

输入迭代器类别

output_iterator_tag

输出迭代器类别

forward_iterator_tag

转发迭代器类

bidirectional_iterator_tag

双向迭代器类

random_access_iterator_tag

随机访问迭代器类

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP