博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL iterator和reverse_iterator
阅读量:7086 次
发布时间:2019-06-28

本文共 1159 字,大约阅读时间需要 3 分钟。

先看一段代码:

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 void print(int elem) 8 { 9 cout << elem << ' ';10 }11 12 int main()13 {14 deque
coll;15 16 for(int i = 1; i <= 9; ++i)17 {18 coll.push_back(i);19 }20 21 deque
::iterator pos1;22 pos1 = find(coll.begin(), coll.end(), 2);23 24 deque
::iterator pos2;25 pos2 = find(coll.begin(), coll.end(), 7);26 27 for_each(pos1, pos2, print);28 cout << endl;29 30 deque
::reverse_iterator rpos1(pos1);31 deque
::reverse_iterator rpos2(pos2);32 33 for_each(rpos2, rpos1, print);34 cout << endl;35 36 return 0;37 }

代码首先在一个deque中插入1到9,然后查找元素值为2和7的位置,分别赋值给迭代器pos1和pos2,然后输出,由于STL中的操作总是左开右闭的区间,即[2,7),所以输出2 3 4 5 6,7不会输出。

接下来将迭代器转换成逆向迭代器,再次输出,对于反向迭代器,由于是反向,所以按逻辑来说它是左开右闭的(这里我尝试了rpos2为iterator.end(),rpos1为iterator.begin(),此时输出全部),即(7,2](事实上还是左闭右开,只不过此时的左和iterator顺序一样)。所以输出6 5 4 3 2,下面的图片解释的很清楚。

 

 

转载请注明出处:

你可能感兴趣的文章
Git基本操作
查看>>
Spring事务传播行为详解
查看>>
Java图形化:Swing表格的使用
查看>>
MacOS系统Docker默认存储路径迁移方法
查看>>
vscode插件开发实践与demo源码
查看>>
初学UI小知识总结
查看>>
Kotlin--高阶函数
查看>>
多阶段决策问题——DAG(算法竞赛入门经典笔记)
查看>>
UI分析工具YourView开源—App开发者不可多得的利器!
查看>>
记录一次jenkins的部署和使用
查看>>
vscode专题
查看>>
前端基础17:对象/实例/原型
查看>>
tornado 源码之 iostream.py
查看>>
Javascript基础学习干货教程(3)
查看>>
JAVA 泛型理解
查看>>
Git常用命令清单,掌握这些,轻松驾驭版本管理
查看>>
同事说我「变」了
查看>>
Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程
查看>>
SQL 语法速成手册
查看>>
使用nginx控制ElasticSearch访问权限
查看>>