C++中的迭代器是一种抽象的数据访问对象,它允许对容器中的元素进行遍历,而不必暴露底层数据结构的细节。迭代器提供了一种通用的方法来访问容器中的元素,无论容器的类型是什么。C++标准库中的许多容器(如vector、list、map等)都支持迭代器。
1. 迭代器的种类和特性:
1.1 输入迭代器(Input Iterator):
可以从序列中读取值。只能单趟遍历,不能多次遍历同一序列。
例如:istream_iterator。
1.2 输出迭代器(Output Iterator):
可以写入值到序列中。只能单趟遍历,不能多次遍历同一序列。
例如:ostream_iterator。
1.3 前向迭代器(Forward Iterator):
可以在同一序列上进行多趟读写操作,但只能单向移动。支持 ++ 操作。
例如:std::forward_iterator_tag。
1.4 双向迭代器(Bidirectional Iterator):
可以在同一序列上进行多趟读写操作,并支持双向移动(向前和向后)。支持 ++ 和 – 操作。
例如:std::bidirectional_iterator_tag。
1.5 随机访问迭代器(Random Access Iterator):
提供对元素的随机访问,支持指针算术运算。支持 ++, --, +=, -=, <, >, <=, >= 等操作。
例如:std::random_access_iterator_tag。
2. 迭代器的基本操作:
2.1 begin() 和 end():
begin() 返回指向容器第一个元素的迭代器。
end() 返回指向容器末尾(最后一个元素之后)的迭代器。
2.2 * 运算符:
用于访问迭代器指向的元素。
2.3 ++ 和 – 运算符:
++ 将迭代器移动到下一个元素。
– 将迭代器移动到前一个元素。
3. 迭代器的应用:
3.1 容器遍历:
3.2 算法与迭代器结合:
3.3 自定义容器与迭代器:
4. 迭代器范围:
迭代器通常用于表示一个范围,包括起始位置和终止位置。可以使用两个迭代器来表示一个容器中的一段元素。