迭代器(Iterator)是C++标准模板库(STL)中的一个核心概念,它提供了一种通用的方法来访问容器中的元素。迭代器可以被视为一种抽象指针,它允许对容器中的元素进行遍历而无需了解容器的内部结构。
迭代器的主要特点包括:
1. 类型安全:迭代器确保只能访问容器中指定类型的元素。
2. 容器无关性:迭代器提供了一种与容器类型无关的方式来访问元素,使得STL算法可以通用于不同的容器。
3. 双向遍历:大多数迭代器允许向前和向后遍历容器中的元素。
4. 读写能力:迭代器可以用于读取和修改容器中的元素。
5. 范围限制:迭代器定义了其操作的有效范围,通常与它所属的容器相关。
begin和end
begin()
返回一个迭代器,指向容器中第一个有效元素的位置,允许用户从容器的开始位置进行访问。
end()
迭代器是一个指向容器末尾的迭代器,即容器中最后一个元素之后的位置。具体来说:
- 对于顺序容器(如
std::vector
、std::deque
、std::array
),end()
迭代器指向数组或序列的最后一个有效元素之后的位置。 - 对于关联容器(如
std::set
、std::map
、std::multiset
、std::multimap
),end()
迭代器指向最后一个节点之后的位置。
rbegin和rend
-
rbegin()
:对于所有类型的容器,rbegin()
返回一个反向迭代器,指向容器中最后一个元素的开始,指向正向遍历时的最后一个元素。 -
rend()
:rend()
返回一个反向迭代器,指向容器第一个元素的结束位置,指向容器开始之前的一个位置。在反向遍历中,rend()
用作循环的终止条件,类似于正向遍历时的end()
。