1. 迭代器的基本概念
迭代器是一种抽象的指针类型,它使得你可以遍历容器中的元素而不需要知道容器的具体实现细节。迭代器可以用来访问容器中的元素、移动位置、比较位置等。
2. 迭代器的类型
输入迭代器(Input Iterator):只能向前遍历一次容器中的元素。
输出迭代器(Output Iterator):只能向前遍历并修改容器中的元素。
前向迭代器(Forward Iterator):可以多次遍历容器中的元素,并且只能向前遍历。
双向迭代器(Bidirectional Iterator):可以向前和向后遍历容器中的元素。
随机访问迭代器(Random Access Iterator):除了支持前向和双向遍历外,还支持任意位置的直接访问和跳跃。
3. 常用的迭代器操作
3.1. 创建迭代器
迭代器通常通过容器提供的成员函数来获得。例如:
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int>::iterator it = vec.begin();
3.2. 访问元素
可以使用迭代器来访问容器中的元素:
int value = *it; // 访问当前迭代器指向的元素
3.3. 移动迭代器
迭代器可以像指针一样进行递增或递减操作:
++it; // 向前移动
--it; // 向后移动
it += 3; // 向前移动3个位置
it -= 2; // 向后移动2个位置
3.4. 比较迭代器
可以比较两个迭代器是否相等或不相等:
if (it == vec.end())
{
// 迭代器到达容器末尾
}
3.5. 迭代器的应用
迭代器可以与算法库中的函数一起使用,如std::sort、std::find等:
std::sort(vec.begin(), vec.end()); // 使用迭代器对容器进行排序
auto it = std::find(vec.begin(), vec.end(), 3); // 查找元素3
5. 例子
下面是一个使用迭代器遍历std::vector的例子:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用迭代器遍历
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it)
{
std::cout << *it << ' ';
}
std::cout << std::endl;
return 0;
}
在这个例子中,我们使用迭代器从vec.begin()开始遍历,直到vec.end()。每次递增迭代器,*it就访问容器中的下一个元素。