C++ 迭代器适配器
什么是迭代器适配器?
迭代器适配器(Iterator Adaptor)是C++ STL中的一种特殊迭代器,它可以转换一个迭代器的行为,使其具有新的功能或不同的特性。迭代器适配器不直接访问容器元素,而是通过封装一个基础迭代器,修改其默认行为来实现特定功能。
C++标准库提供了三种主要的迭代器适配器:
- 反向迭代器(Reverse Iterator)
- 插入迭代器(Insert Iterator)
- 流迭代器(Stream Iterator)
这些适配器允许我们以更灵活的方式操作容器和数据流,极大地扩展了迭代器的功能。
提示
迭代器适配器是学习STL的重要内容,掌握它们可以让你更高效地处理容器操作。
反向迭代器(Reverse Iterator)
概念介绍
反向迭代器使容器可以从尾到头反向遍历。它将前向移动转换为后向移动,即++
操作变成向前一个元素,--
操作变成向后一个元素。
如何获取反向迭代器
所有支持双向迭代的STL容器都提供了rbegin()
和rend()
方法来获取反向迭代器:
rbegin()
- 返回指向容器最后一个元素的反向迭代器rend()
- 返回指向容器第一个元素之前位置的反向迭代器
代码示例
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 正向遍历
std::cout << "正向遍历: ";
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 反向遍历
std::cout << "反向遍历: ";
for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
std::cout << *rit << " ";
}
std::cout << std::endl;
return 0;
}
输出结果:
正向遍历: 1 2 3 4 5
反向遍历: 5 4 3 2 1
转换关系
反向迭代器和正向迭代器存在一个重要的对应关系:反向迭代器的rbegin()