📅  最后修改于: 2023-12-03 14:39:56.973000             🧑  作者: Mango
在C++中,迭代器(iterator)是一种类似指针的工具,用于遍历STL容器中的元素,STL容器常常包括数组、向量、列表、集合、映射等。
迭代器可分为常规迭代器(regular iterator)和常量迭代器(const iterator)。它们的区别在于对容器的操作是否会对容器本身产生影响。具体如下:
下面是一个示例代码,用于遍历一个向量,并将每个元素的值都增加一:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4};
vector<int>::iterator it;
for (it = nums.begin(); it != nums.end(); it++) {
(*it)++;
}
for (it = nums.begin(); it != nums.end(); it++) {
cout << *it << " ";
}
return 0;
}
这段代码中,我们使用了常规迭代器,通过遍历容器中每个元素,并使用解引用操作符将每个元素的值都增加一。输出结果如下:
2 3 4 5
接下来是一个示例代码,用于遍历一个元素都是整数的列表,并输出每个元素的值:
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> nums = {1, 2, 3, 4};
list<int>::const_iterator it;
for (it = nums.begin(); it != nums.end(); it++) {
cout << *it << " ";
}
return 0;
}
这段代码中,我们使用了常量迭代器,因此不能使用解引用操作符修改容器中元素的值。输出结果如下:
1 2 3 4
常规迭代器和常量迭代器都是STL容器中遍历元素的工具,常规迭代器可以用于改变容器中元素的数值,而常量迭代器只能读取容器中元素的数值。在使用迭代器时,需要根据需要选择相应类型的迭代器,以保证代码正确性和效率。