Home C&C++函数库 c++ 语法 程序源码 Linux C库

<iterator>

头文件
迭代器的定义

迭代器是指指向一组元素(如数组或容器)中的某个元素,能够使用一组操作符(至少使用自增操作符 (++)和解引用操作符(*))遍历该范围内元素的任何对象。

最明显的迭代器形式是指针:指针可以指向数组中的元素,并可以使用自增操作符(++)迭代这些元素。 但也可以使用其他类型的迭代器。例如,每个容器类型(如列表)都有一个特定的迭代器类型,用于遍历其元素。

注意,虽然指针是迭代器的一种形式,但并不是所有的迭代器都具有相同的指针功能;根据迭代器支持的属性, 它们被分为五个不同的类别:

☞ 迭代器的分类



根据实现的功能,迭代器可分为五类:

InputForwardBidirectionalRandom Access

Output

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

前向迭代器具有输入迭代器的所有功能,如果它们不是常量迭代器,还具有输出迭代器的功能, 它们仅限于一个方向(前向)来迭代一个范围。所有标准容器至少支持前向迭代器类型。

双向迭代器类似于前向迭代器,但也可以向后迭代。

随机访问迭代器实现了双向迭代器的所有功能,而且还能够不按顺序访问范围: 通过对迭代器应用偏移值, 可以直接访问距离较远的元素, 而无需遍历两者之间的所有元素。 这些迭代器具有与标准指针类似的功能(指针是这一类的迭代器)。

每个迭代器类别的属性是:
类别 属性 有效表达式
所有类别 复制构造,复制赋值和销毁 X b(a);
b = a;
可以递增 ++a
a++
随机访问 双向的 前向的 输入 支持相等或不相等的比较 a == b
a != b
可以作为右值解引用 *a
a->m
输出 可以作为左值解引用
(仅适用于可变迭代器类型)
*a = t
*a++ = t
默认构造 X a;
X()
多通道 : 解引用和递增都不会影响引用性 { b=a; *a++; *b; }
可以递减 --a
a--
*a--
支持operators + 和 - a + n
n + a
a - n
a - b
支持迭代器之间的不等比较 (<, >, <= and >=) a < b
a > b
a <= b
a >= b
支持复合赋值操作 += and -= a += n
a -= n
支持偏移解引用操作符 ([]) a[n]

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

更多详细信息,请参见输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器的参考资料。

☞ 函数



迭代器操作:
advance 向前移动迭代器(函数模板 )
distance 返回迭代器之间的距离(函数模板 )
begin 迭代器开始(函数模板 )
end 迭代器结束(函数模板 )
prev 获取前一个元素的迭代器(函数模板 )
next 获取下一个元素的迭代器(函数模板 )

迭代器构造:
back_inserter 构造一个末尾插入迭代器(函数模板 )
front_inserter 构造一个开头插入迭代器(函数模板 )
inserter 构造一个插入迭代器(函数模板 )
make_move_iterator 构造一个移动插入迭代器(函数模板 )

☞ 类



iterator 迭代器的基类(类模板)
iterator_traits 迭代器特征(类模板)
预定义的迭代器
reverse_iterator 反向迭代器(类模板)
move_iterator 移动迭代器(类模板)
back_insert_iterator 尾插入迭代器(类模板)
front_insert_iterator 头插入迭代器(类模板)
insert_iterator 插入迭代器(类模板)
istream_iterator 输入流迭代器(类模板)
ostream_iterator 输出流迭代器(类模板)
istreambuf_iterator 输入流缓冲区迭代器(类模板)
ostreambuf_iterator 输出流缓冲区迭代器(类模板)
分类标签
input_iterator_tag 输入迭代器分类(类)
output_iterator_tag 输出迭代器分类(类)
forward_iterator_tag 前向迭代器分类(类)
bidirectional_iterator_tag 双向迭代器分类(类)
random_access_iterator_tag 随机访问迭代器分类(类)

联系我们 免责声明 关于CandCplus 网站地图