筒濂 发表于 2025-8-18 22:15:34

将std容器的正向迭代器转换成反向迭代器

迭代器是一种很有用的设计模式,它提供一种方法顺序访问一个聚合对象(如列表、集合、树等)中的各个元素,而又不暴露该对象的内部表示。迭代器最大的好处是实现了遍历逻辑与数据结构解耦,比如说,你使用迭代器实现了某个容器对象的遍历,后来发现这个容器不合适,需要更换成另外一个容器,那么在修改容器类型之后,就不用修改遍历操作。
虽然现代编程都内置了对迭代器模式的支持,但是自己在封装某个数据对象实现的时候,就免不了自己实现迭代器。一般而言是先封装正向迭代器,如果还有反向遍历的需求,那么就可以通过正向迭代器来实现反向迭代器。C++中std的迭代器实现还是挺绕的,比如正向迭代器begin是第一个元素,end最后一个元素的后一个元素;反向迭代器rbegin是最后一个元素,rend是第一个元素的前一个元素——两者最好不要混用,用正向迭代器实现反向遍历操作多半不靠谱。
那么具体如何通过正向迭代器来获取反向迭代器呢?可以使用如下公式:
反向迭代器 r_it = std::reverse_iterator(fwd_it + 1);
可参考如下示例来验证:
#include #include using namespace std;int main() {// 创建一个 vector 用于测试std::vector vec = {10, 20, 30, 40, 50};std::cout

轩辕娅童 发表于 2025-11-6 00:12:10

不错,里面软件多更新就更好了

呶募妙 发表于 2025-12-24 12:30:15

东西不错很实用谢谢分享

峰襞副 发表于 2026-1-3 06:08:18

收藏一下   不知道什么时候能用到

虽裘侪 发表于 2026-1-12 14:22:46

过来提前占个楼

柏雅云 发表于 2026-1-14 11:59:21

谢谢楼主提供!

句惫 发表于 2026-1-18 08:34:46

谢谢楼主提供!

硫辨姥 发表于 2026-1-18 18:57:14

前排留名,哈哈哈

唐茗 发表于 2026-1-20 00:11:21

谢谢楼主提供!

采序 发表于 2026-1-21 07:59:43

谢谢分享,试用一下

忆雏闲 发表于 2026-1-21 14:53:04

谢谢分享,试用一下

菅舛 发表于 2026-1-22 22:00:35

鼓励转贴优秀软件安全工具和文档!

余思洁 发表于 2026-1-23 08:04:37

yyds。多谢分享

亢安芙 发表于 2026-1-23 10:30:03

不错,里面软件多更新就更好了

虹姥 发表于 2026-1-27 01:48:22

懂技术并乐意极积无私分享的人越来越少。珍惜

科元料 发表于 2026-1-27 08:04:39

谢谢楼主提供!

褐洌 发表于 2026-1-27 15:20:10

分享、互助 让互联网精神温暖你我

肿圬后 发表于 2026-1-27 21:27:44

用心讨论,共获提升!

辜酗徇 发表于 2026-1-30 06:04:20

不错,里面软件多更新就更好了

戈森莉 发表于 2026-2-2 04:10:55

过来提前占个楼
页: [1] 2
查看完整版本: 将std容器的正向迭代器转换成反向迭代器