📅  最后修改于: 2023-12-03 15:29:54.807000             🧑  作者: Mango
迭代器(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库中的容器。