迭代器是 C++ 标准模板库 (STL) 中用于遍历容器元素的对象或概念。
它们提供了一种通用的方式来访问容器中的元素,而不需要了解容器的底层实现。
迭代器在设计上类似于指针,但功能更为强大和灵活。
1. 迭代器是什么?
迭代器 是一个抽象概念,它为容器(如 vector
、list
等)提供了一种统一的访问接口。通过迭代器,可以逐一访问容器中的每个元素,而不关心容器的具体实现细节。
迭代器的主要功能包括:
- 访问元素:通过迭代器,可以访问当前元素。
- 遍历容器:迭代器支持前进(
++
)、后退(--
)操作,允许遍历容器中的元素。 - 比较:迭代器支持比较操作(如
==
、!=
),用以判断是否到达容器的末尾。
迭代器的分类:
根据功能和适用场景,迭代器分为以下几种类型:
- 输入迭代器(Input Iterator):只支持从容器读取元素,通常用于一次性遍历。
- 输出迭代器(Output Iterator):只支持向容器写入元素,通常用于一次性遍历。
- 前向迭代器(Forward Iterator):支持单向遍历,可以读取和写入元素。
- 双向迭代器(Bidirectional Iterator):支持双向遍历,可以读取和写入元素。
list
的迭代器属于这一类。 - 随机访问迭代器(Random Access Iterator):支持在容器中任意位置进行访问,类似于指针。
vector
的迭代器属于这一类。
使用迭代器的示例:
#include <iostream>
#include <vector>
#include <list>
int main() {
// 使用 vector 的迭代器
std::vector<int> myVector = {1, 2, 3, 4, 5};
std::vector<int>::iterator itVec;
for (itVec = myVector.begin(); itVec != myVector.end(); ++itVec) {
std::cout << *itVec << " "; // 输出: 1 2 3 4 5
}
std::cout << std::endl;
// 使用 list 的迭代器
std::list<int> myList = {10, 20, 30, 40, 50};
std::list<int>::iterator itList;
for (itList = myList.begin(); itList != myList.end(); ++itList) {
std::cout << *itList << " "; // 输出: 10 20 30 40 50
}
std::cout << std::endl;
return 0;
}
标签:容器,遍历,Iterator,迭代,元素,C++,vector,随笔 From: https://www.cnblogs.com/kitanoki/p/18384036