📜  C++中的迭代器简介(1)

📅  最后修改于: 2023-12-03 15:29:54.807000             🧑  作者: Mango

C++中的迭代器简介

迭代器(Iterator)是C++标准模板库(STL)中的一个重要概念,它是一个对象,用于可以遍历标准容器中的元素。迭代器提供了一种访问容器对象中元素的方式,提供了一种统一的方法访问它们,无论这些元素是存储在数组、链表还是其他数据结构中。

迭代器的作用

使用迭代器可以对容器进行遍历,达到读取和处理其中元素的目的。与指针类似,迭代器可以指向容器中的一个具体元素,也可以进行指针运算(如++, --等),从而可以操作容器内的元素。

迭代器分类

STL中的迭代器根据功能和性能的不同可以分为以下五类:

  • 输入迭代器(Input Iterator):一般用于读取容器中的元素。支持==、!=、++、*等五种操作。例如:istream_iterator、istringstream_iterator等。

  • 输出迭代器(Output Iterator):一般用于向容器中写入元素。支持++、*等两种操作。例如:ostream_iterator、back_insert_iterator等。

  • 前向迭代器(Forward Iterator):支持输入和输出两种操作的迭代器。能够对指向的元素进行读写操作,但只能向前遍历容器。例如:list::iterator。

  • 双向迭代器(Bidirectional Iterator):与前向迭代器类似,但是在前向迭代器的基础上增加了--操作,也就是支持反向遍历容器。例如:vector::iterator、deque::iterator等。

  • 随机迭代器(Random Access Iterator):支持双向迭代器所有操作的基础上,还支持随机访问操作(比如[]、+=、-=等),也就是可以跳过若干元素进行访问,是最强大的迭代器。例如:array::iterator、map::iterator等。

迭代器使用示例

以下是一个简单的迭代器使用示例。代码注释对应迭代器的基本使用方法。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = { 1, 2, 3, 4, 5 };

    // 前向迭代器
    for (auto it = v.begin(); it != v.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;

    // 双向迭代器
    for (auto rit = v.rbegin(); rit != v.rend(); ++rit)
    {
        cout << *rit << " ";
    }
    cout << endl;

    // 随机迭代器
    vector<int>::iterator it = v.begin();
    it += 2;
    cout << *it << endl;

    return 0;
}

以上代码中,首先创建了一个vector对象v,并用初始值列表赋初值。接着用前向迭代器遍历v中的元素,并输出每个元素的值。然后用双向迭代器从后往前遍历v,并输出每个元素的值。最后使用随机迭代器访问v中的第三个元素,并输出其值。

总结

迭代器是STL中的一个重要概念,使用它可以遍历STL容器中的元素,从而实现对容器中元素的读取和处理。根据其功能和性能的不同,STL中的迭代器可以分为五种类型:输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机迭代器。C++程序员应该掌握迭代器的基本概念和使用方法,以便熟练地使用STL库中的容器。