C++ 前向迭代器

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
  • 关系运算符: 正向迭代器可以与等号运算符一起使用,但不能在正向迭代器上使用其他关系运算符。

假设’A’和’B’是两个迭代器:

A==B;        // valid
A>=B;        // invalid
  • 算术运算符 :算术运算符不能与正向迭代器一起使用。
A+2;         // invalid
A+3;         // invalid
  • Random Access :前向迭代器不提供元素的随机访问。它只能遍历容器的元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程