📅  最后修改于: 2023-12-03 14:59:51.685000             🧑  作者: Mango
在C++中,迭代器是指向容器中元素的指针。迭代器提供了对容器中元素的访问方式,使得程序员可以遍历容器,访问和修改其中的元素。
C++中的迭代器分为五种类型:输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。其中,随机访问迭代器具有最强的功能,支持随机访问容器中的元素,是STL中很多算法的必要条件。
C++中的随机访问迭代器拥有以下特征:
[]
操作符访问任意元素==
、!=
、<
、>
、<=
、>=
+
、-
运算符来计算迭代器之间的距离+=
、-=
运算符进行跳跃在STL中,大部分的容器都支持随机访问迭代器。一些常见的容器,例如vector
、array
、deque
都可以使用随机访问迭代器。
使用随机访问迭代器可以方便地遍历容器。下面是一个使用随机访问迭代器遍历vector
容器的例子:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
vector<int>::iterator iter;
for (iter = vec.begin(); iter < vec.end(); iter++) {
cout << *iter << " ";
}
cout << endl;
return 0;
}
输出结果为:
1 2 3 4 5
在这个例子中,使用vector<int>::iterator
定义了一个迭代器iter
,然后使用vec.begin()
获取容器的起始位置迭代器,使用vec.end()
获取容器的结束位置迭代器。在遍历过程中,使用for
循环和指针算术运算iter++
移动迭代器位置,使用*iter
来访问迭代器位置对应的元素。
使用随机访问迭代器还可以通过[]
运算符访问任意元素。下面是一个使用随机访问迭代器访问vector
中的元素的例子:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
vector<int>::iterator iter;
cout << "The first element is " << vec[0] << endl;
cout << "The third element is " << vec[2] << endl;
return 0;
}
输出结果为:
The first element is 1
The third element is 3
在这个例子中,使用[]
运算符访问了vector
容器中的第一个元素和第三个元素。
使用随机访问迭代器,可以使用+
、-
、+=
、-=
运算符计算迭代器之间的距离。下面是一个计算vector
中两个迭代器之间距离的例子:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
vector<int>::iterator iter1 = vec.begin();
vector<int>::iterator iter2 = iter1 + 3;
cout << "The distance between iter1 and iter2 is " << iter2 - iter1 << endl;
return 0;
}
输出结果为:
The distance between iter1 and iter2 is 3
在这个例子中,使用vector<int>::iterator
定义了两个迭代器iter1
和iter2
,然后使用指针算术运算iter1 + 3
移动iter1
的位置,使得iter2
指向vector
中的第四个元素。然后,使用iter2 - iter1
计算两个迭代器之间的距离,输出结果为3
。
C++中的随机访问迭代器具有很强的功能,支持使用指针算术运算、[]
操作符、比较运算符和计算距离等操作。使用随机访问迭代器可以方便地遍历容器,访问任意元素,计算迭代器之间的距离等操作,在STL中应用广泛。