C++ 前向迭代器

  • 前向迭代器(Forward Iterator)是双向迭代器和随机访问迭代器的组合。因此,我们可以说前向迭代器可以用于读取和写入容器。
  • 前向迭代器用于从容器的开始到结束读取内容。
  • 前向迭代器只使用递增运算符(++)在容器的所有元素之间移动。因此,我们可以说前向迭代器只能向前移动。
  • 前向迭代器是一个多遍迭代器,即可以多次遍历容器。

前向迭代器的操作

属性有效表达式
可以默认构造。A x;
可以进行复制构造。A x(y);
可以进行复制赋值。y = x;
可以使用相等或不等运算符进行比较。a==b; a!=b;
可以递增。a++; ++a;
可以解引用作为rvalue。*a;
可以解引用作为lvalue。*a = t;

其中'A'是前向迭代器类型,x和y是前向迭代器类型的对象,t是迭代器类型对象指向的对象。

让我们看一个简单的例子:

#include <iostream>
#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; // 声明vector
    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

前向迭代器的特性

1.png

  • 相等/不相等运算符:前向迭代器可以通过使用相等或不等运算符进行比较。

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

A==B; // 相等运算符
A!=B; // 不相等运算符
  • 解引用:我们可以将前向迭代器解引用为rvalue和lvalue。因此,我们可以访问前向迭代器的输出并且可以将值赋给前向迭代器。

假设'A'是迭代器,'t'是整数变量:

*A = t;
t = *A;
  • 递增:前向迭代器可以递增,但不能递减。

假设'A'是迭代器:

A++;
++A;

前向迭代器的限制

  • 递减:前向迭代器不能递减,因为它只能向前移动。

假设'A'是迭代器:

A--; // 无效
  • 关系运算符:前向迭代器可以使用相等运算符,但不能对其他关系运算符进行操作。

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

A==B; // 有效
A>=B; // 无效
  • 算术运算符:前向迭代器不能使用算术运算符。
A+2; // 无效
A+3; // 无效
  • 随机访问:前向迭代器不支持随机访问元素,它只能迭代容器的元素。

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想