- 转发迭代器是双向和随机访问迭代器的组合。因此,可以说正向迭代器可用于读取和写入集合。
- 正向迭代器用于从集合的开头到结尾读取内容。
- 正向迭代器仅使用增量运算符(++)在集合的所有元素之间移动。因此,可以说正向迭代器只能向前移动。
- 正向迭代器是一次多遍迭代器。
让我们看一个简单的示例:
#include <iostream> #include <fstream> #include <iterator> #include <vector>using namespace std;
template<class ForwardIterator> //函数模板 void display(ForwardIterator first, ForwardIterator last) //display函数 { while(first!=last) { cout<<*first<<" "; first++; } }
int main() {
vector<int> a; //向量的声明。 for(int i=1;i<=10;i++) { a.push_back(i); } display(a.begin(),a.end()); //调用 display() 函数.
return 0; }
输出:
1 2 3 4 5 6 7 8 9 10
转发迭代器函数:

- 等式/不等式运算符 : 可以使用等式或不等式运算符比较正向迭代器。
假设" A"和" B"是两个迭代器:
A==B; //相等运算符 A!=B; //不相等运算符
- 解引用:我们可以将正向迭代器解引用为右值和左值。因此,我们可以访问输出迭代器,也可以将值分配给输出迭代器。
假设" A"是迭代器," t"是整数变量:
*A = t; t = *A;
- 可增量:前向迭代器可以递增,但不能递减。
假设" A"是迭代器:
A++; ++A;
转发迭代器局限性:
- 可递减:正向迭代器只能向前移动,因此不能递减。
假设" A"是迭代器:
A--; //invalid
- 关系运算符:前向迭代器可以与相等运算符一起使用,但是其他关系运算符不能应用于前向迭代器。
假设" A"和" B"是两个迭代器:
A==B; //valid A>=B; //invalid
- 算术运算符:算术运算符不能与正向迭代器一起使用。
A+2; //invalid A+3; //invalid
- 随机访问:前向迭代器不提供元素的随机访问。它只能遍历集合的元素。