【C++】迭代器
迭代器的类型
(1) 输入迭代器(Input Iterator)
功能:只能单向遍历(前向),且只能读取元素(不能修改)。
特点:支持
++
(前置和后置)和*
(解引用),但不支持多次遍历。示例:C++ 中的
istream_iterator
。(2) 输出迭代器(Output Iterator)
功能:只能单向遍历(前向),且只能写入元素(不能读取)。
特点:支持
++
和*
(仅用于赋值),但不保证能重复遍历。示例:C++ 中的
ostream_iterator
。(3) 前向迭代器(Forward Iterator)
功能:单向遍历(前向),可读写元素。
特点:支持多次遍历(可保存迭代器状态)。
示例:C++ 中单向链表的迭代器(如
std::forward_list
)。(4) 双向迭代器(Bidirectional Iterator)
功能:支持前向和后向遍历(
++
和--
),可读写元素。特点:比前向迭代器更灵活。
示例:C++ 中
std::list
、std::set
的迭代器。(5) 随机访问迭代器(Random Access Iterator)
功能:支持直接跳转到任意位置(如
+n
、-n
),类似指针操作。特点:最高效的迭代器,支持所有指针算术运算(
<
,>
,[]
等)。示例:C++ 中
std::vector
、std::deque
的迭代器。
C++ 中的迭代器兼容性
C++ 的迭代器分为 5 个类别(从低到高):
输入迭代器(Input Iterator)(只读,单次遍历)
输出迭代器(Output Iterator)(只写,单次遍历)
前向迭代器(Forward Iterator)(可读写,可多次遍历)
双向迭代器(Bidirectional Iterator)(支持
++
和--
)随机访问迭代器(Random Access Iterator)(支持
+n
、-n
、[]
)
兼容性规则
高类别迭代器可以替代低类别迭代器(如
随机访问迭代器
可以当作双向迭代器
使用)。低类别迭代器不能替代高类别迭代器(如
双向迭代器
不能用于std::sort
,因为它需要随机访问迭代器
)。