C/C++总述:Study C/C++-CSDN博客
要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。
- 正向迭代器(读写)
容器类名::iterator 迭代器名; - 常量正向迭代器(只读)
容器类名::const_iterator 迭代器名; - 反向迭代器(反向读写)
容器类名::reverse_iterator 迭代器名; - 常量反向迭代器(反向只读)
容器类名::const_reverse_iterator 迭代器名;
不同容器迭代器功能
容器 | 迭代器功能 |
---|---|
vector | 随机访问 |
deque | 随机访问 |
list | 双向 |
set/multiset | 双向 |
map/multimap | 双向 |
stack | 不支持迭代器 |
queue | |
priority_queue |
迭代器支持的操作
迭代器的辅助函数
辅助函数 | 功能 |
---|---|
advance(it, n) | 使迭代器 it 向前或向后移动 n 个元素。(取决于n的±) |
distance(it1, it2) | 计算两个迭代器之间的距离,即迭代器 it1 经过多少次 + + 操作后和迭代器 it2 相等。如果调用时 p 已经指向 q 的后面,则这个函数会陷入死循环。 |
iter_swap(it1, it2) | 用于交换两个迭代器 it1、it2 指向的值。 |
迭代器范围
一个迭代器范围(iterator range)由一对迭代器表示,两个迭代器分别指向同一个容器中的元素或者是尾元素之后的位置(one past the last element)。这两个迭代器通常被称为begin和end。
这种元素范围被称为左闭合区间(left-inclusive interval),其标准数学描述为[begin, end)。
表示范围自begin开始,于end之前结束。迭代器begin和end必须指向相同的容器。end可以与begin指向相同的位置,但不能指向begin之前的位置。