1、概念
是 C++ 中用于遍历容器(如vector、set、map)中元素的一种工具。它类似于指针,提供了访问和操作容器元素的能力。
2、作用
-
可以遍历容器中的元素。
-
可以访问容器中的元素。
-
可以修改容器中的元素
3、分类
-
输入迭代器:只能读取元素,单向移动。
-
输出迭代器:只能写入元素,单向移动。
-
前向迭代器:可以读取和写入元素,单向移动。
-
双向迭代器:可以读取和写入元素,双向移动(如list)。
-
随机访问迭代器:可以读取和写入元素,支持随机访问(如vector)。
4、常见操作
-
*:解引用,访问迭代器指向的元素。
-
->:访问元素的成员(如果元素是对象)。
-
++:移动到下一个元素。
-
--:移动到上一个元素(仅双向和随机访问迭代器支持)。
-
==和!=:比较两个迭代器是否指向同一位置。
-
begin() 和end():
-
begin() 返回指向容器第一个元素的迭代器。
-
end()返回指向容器末尾(最后一个元素的下一个位置)的迭代器。
-
-
cbegin() 和 cend():返回常量迭代器,不能修改元素。
-
rbegin() 和 rend():返回反向迭代器,用于从后向前遍历。
-
crbegin() 和 crend()返回常量反向迭代器,不能修改元素。
5、代码
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = { 1, 2, 3, 4, 5 };
// 使用迭代器遍历
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << " ";
}//1,2,3,4,5
cout << endl;
// 使用反向迭代器遍历
for (auto it = v.rbegin(); it != v.rend(); ++it) {
cout << *it << " ";
}//5,4,3,2,1
cout << endl;
// 使用迭代器修改元素
for (auto it = v.begin(); it != v.end(); ++it) {
*it += 2; // 每个元素加 2
}//4,5,6,7,8
return 0;
}