cpp中iterator是什么
时间: 2025-05-06 22:50:09 浏览: 12
### C++ 迭代器的概念
在 C++ 中,迭代器(iterator)是一种通用的抽象概念,用于在容器中遍历和访问元素。它提供了一种统一的接口,使得不同类型的容器能够以相似的方式被遍历和操作[^1]。
迭代器的设计灵感来源于指针的概念,因此它可以看作是对指针功能的一种扩展。通过迭代器,程序员可以在不关心底层实现的情况下对各种数据结构中的元素进行访问和修改。
---
### C++ 迭代器的分类
C++ 标准库定义了五种主要的迭代器类别,每一种都有不同的能力:
#### 1. 输入迭代器 (Input Iterator)
输入迭代器允许读取容器中的元素,支持单向移动并允许多次解引用来获取值。它们通常用于只读场景。
#### 2. 输出迭代器 (Output Iterator)
输出迭代器仅限于写入容器中的元素,同样也支持单向移动,但每个位置只能写入一次。例如 `std::ostream_iterator` 是典型的输出迭代器[^2]。
#### 3. 前向迭代器 (Forward Iterator)
前向迭代器结合了输入迭代器和输出迭代器的功能,还支持多次解引用以及单向移动的能力。这意味着可以通过同一个迭代器对象反复访问同一位置的数据。
#### 4. 双向迭代器 (Bidirectional Iterator)
双向迭代器除了具备前向迭代器的所有特性外,还可以反向移动(即向前和向后都可以)。例如 `std::list<T>::iterator` 就是一个双向迭代器。
#### 5. 随机访问迭代器 (Random Access Iterator)
随机访问迭代器是最强大的一类迭代器,提供了类似于传统指针对数组的操作方式,比如可以直接跳跃到任意索引处、使用算术运算符等。典型例子有 `std::vector<T>::iterator` 和原始指针。
---
### 使用方法示例
以下是几个常见容器及其对应迭代器使用的简单代码示例:
#### 示例 1: 使用 vector 容器与随机访问迭代器
```cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 获取起始和结束迭代器
auto it_begin = vec.begin();
auto it_end = vec.end();
while(it_begin != it_end){
std::cout << *it_begin << " "; // 解引用迭代器访问当前元素
++it_begin; // 移动至下一个元素
}
}
```
#### 示例 2: 使用 map 容器与双向迭代器
```cpp
#include <iostream>
#include <map>
int main(){
std::map<std::string, int> myMap;
myMap["apple"] = 10;
myMap["banana"] = 20;
for(auto iter = myMap.begin(); iter != myMap.end(); ++iter){
std::cout << (*iter).first << ": " << (*iter).second << "\n";
}
}
```
以上两个实例分别展示了如何利用不同类型容器上的迭代器完成基本任务——前者演示的是基于连续存储空间快速定位;后者则体现了键值关联型集合上逐项处理逻辑[^3]。
---
阅读全文
相关推荐

















