C++迭代器是一种用于遍历容器(如数组、向量、列表等)中元素的指针。C++标准库提供了多种类型的迭代器,每种迭代器都有其特定的用途和特点。以下是C++中常见的迭代器类型及其特点:
- 输入迭代器(Input Iterator):
- 只能向前移动,不能向后移动。
- 只能读取元素,不能修改元素。
- 语法:
input_iterator
- 示例:
std::istream_iterator
- 输出迭代器(Output Iterator):
- 只能向后移动,不能向前移动。
- 只能写入元素,不能读取元素。
- 语法:
output_iterator
- 示例:
std::ostream_iterator
- 前向迭代器(Forward Iterator):
- 可以向前移动,也可以向后移动(但只能移动到下一个元素)。
- 可以读取和修改元素。
- 语法:
forward_iterator
- 示例:
std::vector
::iterator
- 双向迭代器(Bidirectional Iterator):
- 可以向前和向后移动。
- 可以读取和修改元素。
- 语法:
bidirectional_iterator
- 示例:
std::list
::iterator
- 随机访问迭代器(Random Access Iterator):
- 可以在常数时间内向前、向后或跳跃任意数量的元素。
- 可以读取和修改元素。
- 语法:
random_access_iterator
- 示例:
std::vector
、::iterator std::array
::iterator
- 整数迭代器(Integer Iterator):
- 用于遍历整数序列。
- 语法:
integer_iterator
- 示例:
std::istream_iterator
、std::ostream_iterator
- 指针迭代器(Pointer Iterator):
- 实际上并不是C++标准库的一部分,但可以通过指针实现类似的功能。
- 可以向前和向后移动。
- 可以读取和修改元素。
- 示例:使用指针作为迭代器
需要注意的是,迭代器的类型特点决定了它们可以执行的操作。例如,只有随机访问迭代器才能使用+
和-
运算符进行元素间的跳跃操作。此外,迭代器还支持解引用操作(*
)来获取当前元素的值,以及比较操作(==
和!=
)来判断是否到达了容器的末尾。