本文概述
- 在正向迭代器上执行的操作
- 转发迭代器的功能
- 正向迭代器的局限性
- 前向迭代器是双向和随机访问迭代器的组合。因此, 可以说正向迭代器可用于读取和写入容器。
- 转发迭代器用于从容器的开头到结尾读取内容。
- 前向迭代器仅使用增量运算符(++)在容器的所有元素之间移动。因此, 可以说正向迭代器只能向前移动。
- 转发迭代器是多遍迭代器。
物产 | 有效表达 |
---|---|
它是默认可构造的。 | A x; |
它是可复制构造的。 | A x(y); |
它是可分配的副本。 | y = x; |
可以使用相等或不相等运算符比较它。 | a == b; a!= b; |
可以增加。 | a ++; ++ a; |
可以将其取消引用为右值。 | *a; |
也可以将其取消引用为左值。 | * a = t; |
让我们看一个简单的例子:
#include <
iostream>
#include <
fstream>
#include <
iterator>
#include <
vector>
using namespace std;
template<
class ForwardIterator>
// function template
void display(ForwardIterator first, ForwardIterator last)// display function
{
while(first!=last)
{
cout<
<
*first<
<
" ";
first++;
}
}int main()
{vector<
int>
a;
// declaration of vector.
for(int i=1;
i<
=10;
i++)
{
a.push_back(i);
}
display(a.begin(), a.end());
// calling display() function.return 0;
}
输出:
1 2 3 4 5 6 7 8 9 10
转发迭代器的功能
文章图片
- 相等/不相等运算符:可以使用相等或不相等运算符比较前向迭代器。
A==B;
// equality operator
A!=B;
// inequality operator
- 取消引用:我们可以将正向迭代器取消引用为右值和左值。因此, 我们可以访问输出迭代器, 也可以将值分配给输出迭代器。
*A = t;
t = *A;
- 可递增的:前向迭代器可以递增, 但不能递减。
A++;
++A;
正向迭代器的局限性
- 可递减的:前向迭代器仅在向前方向上移动, 因此无法递减。
A--;
// invalid
- 关系运算符:正向迭代器可以与相等运算符一起使用, 但是其他关系运算符不能应用于正向迭代器。
A==B;
// valid
A>
=B;
// invalid
- 算术运算符:算术运算符不能与正向迭代器一起使用。
A+2;
// invalid
A+3;
// invalid
- 随机访问:前向迭代器不提供元素的随机访问。它只能迭代容器的元素。
推荐阅读
- C++迭代器用法
- C++双向迭代器用法
- C++中的阿姆斯特朗数
- 生成斐波那契三角形的C++程序
- C++使用递归
- C++程序打印数字三角形
- C++程序打印字母三角形
- C++ map映射函数用法
- C++列表list用法