C++:iterator 头文件详解

本文详细介绍了C++中的迭代器(iterator)头文件,包括迭代器的定义、五大类别及其特性,如输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。此外,还讲解了迭代器的相关操作,如advance、distance、begin、end等,以及各种类型的迭代器生成器,如back_inserter、front_inserter等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<iterator>


header

迭代器定义

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

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

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


迭代器类别

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

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

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

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

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


迭代器类别的属性:

类别特性表达
所有类别copy-constructiblecopy-assignable and destructibleX b(a);
b = a;
Can be incremented++a
a++
Random AccessBidirectionalForwardInputSupports equality/inequality comparisonsa == b
a != b
Can be dereferenced as an rvalue*a
a->m
OutputCan be dereferenced as an lvalue 
(only for mutable iterator types)
*a = t
*a++ = t
 default-constructibleX 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 iteratorsa < 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 iteratoroutput iteratorforward iteratorbidirectional iterator 和 random-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

随机访问迭代器类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值