C++前向迭代器用法

本文概述

  • 在正向迭代器上执行的操作
  • 转发迭代器的功能
  • 正向迭代器的局限性
  • 前向迭代器是双向和随机访问迭代器的组合。因此, 可以说正向迭代器可用于读取和写入容器。
  • 转发迭代器用于从容器的开头到结尾读取内容。
  • 前向迭代器仅使用增量运算符(++)在容器的所有元素之间移动。因此, 可以说正向迭代器只能向前移动。
  • 转发迭代器是多遍迭代器。
在正向迭代器上执行的操作
物产 有效表达
它是默认可构造的。 A x;
它是可复制构造的。 A x(y);
它是可分配的副本。 y = x;
可以使用相等或不相等运算符比较它。 a == b; a!= b;
可以增加。 a ++; ++ a;
可以将其取消引用为右值。 *a;
也可以将其取消引用为左值。 * a = t;
其中“ A”是正向迭代器类型, x和y是正向迭代器类型的对象, 而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

转发迭代器的功能
C++前向迭代器用法

文章图片
  • 相等/不相等运算符:可以使用相等或不相等运算符比较前向迭代器。
假设“ A”和“ B”是两个迭代器:
A==B; // equality operator A!=B; // inequality operator

  • 取消引用:我们可以将正向迭代器取消引用为右值和左值。因此, 我们可以访问输出迭代器, 也可以将值分配给输出迭代器。
假设“ A”是一个迭代器, “ t”是一个整数变量:
*A = t; t = *A;

  • 可递增的:前向迭代器可以递增, 但不能递减。
假设“ A”是一个迭代器:
A++; ++A;

正向迭代器的局限性
  • 可递减的:前向迭代器仅在向前方向上移动, 因此无法递减。
假设“ A”是一个迭代器:
A--; // invalid

  • 关系运算符:正向迭代器可以与相等运算符一起使用, 但是其他关系运算符不能应用于正向迭代器。
【C++前向迭代器用法】假设“ A”和“ B”是两个迭代器:
A==B; // valid A> =B; // invalid

  • 算术运算符:算术运算符不能与正向迭代器一起使用。
A+2; // invalid A+3; // invalid

  • 随机访问:前向迭代器不提供元素的随机访问。它只能迭代容器的元素。

    推荐阅读