迭代器 iterator
文章目录
- 迭代器简介
- 迭代器的定义
- 迭代器的分类
- 迭代器的使用
迭代器简介
是用来指向、遍历。修改容器元素的变量,类似于指针。
可以迭代STL容器内全部或部分元素的对象;(有些容器不支持下标)
指出容器中的一个特定位置
int main() {char a[] = "hello world";char *p;//p是指向字符数组的指针 相当于迭代器for (p = a; *p != '\0'; *p++) { //++的运算级更高cout << *p;}
}
迭代器的定义
对于vector对象建立一个迭代器,要用双冒号来声明。
vector::iterator it;
int main() {int a[] = {10, 20, 30, 40, 50};vector <int> v(a, a + 5);//定义迭代器vector<int>::iterator it;//给一个存放整数变量的vector定义一个迭代器//指向vector的首元素it = v.begin(); //类似于p=sfor (it; it != v.end(); it++) {cout << *it << " ";}
}
迭代器的分类
常用的迭代器按功能强弱分为:输入、输出、正向、双向、随机访问五种,只学习三种。
不同容器的迭代器,其功能强弱有所不同。例如,排序算法需要通过随机访问迭代器来访问容器中的元素,因此有的容器就不支持排序算法。
1、正向迭代器
假设p是一个正向迭代器,则p可以自曾可以取值(p++ *p),且连个正向迭代器之间可以互相赋值,只支持==与!=。
2、双向迭代器
有正向迭代器的全部功能
双向迭代器还支持自减,可以使得p朝着和++p相反的方向移动。就是不能跳着访问,要一个一个访问。
3、随机访问迭代器
具有双向迭代器的全部功能
还支持p+=i,p-=i,p+i等可以随机访问任意值的操作。
还支持> <等全部比较符,而且还可以两个迭代器相减,p1-p2返回对应元素指向的序号差。
迭代器的使用
可以正向迭代也可以反向迭代
int main() {int a[] = {10, 20, 30, 40, 50};vector <int> v(a, a + 5);//定义迭代器vector<int>::iterator it;//给一个存放整数变量的vector定义一个迭代器//指向vector的首元素it = v.begin(); //类似于p=scout << "迭代器遍历:";for (it; it != v.end(); it++) {cout << *it << " ";}cout << endl;//利用反向迭代器遍历cout << "反向迭代器遍历:";vector<int>::reverse_iterator rit;for (rit = v.rbegin(); rit != v.rend(); rit++) {cout << *rit << " ";}
}
其实迭代器就像指针一样,指向的也是地址,可以跟指针一样的使用。只是各自用途会有不同。
迭代器 iterator相关推荐
- C++中的迭代器(STL迭代器)iterator
1.Cpp中的迭代器 要访问顺序容器和关联容器中的元素,需要通过迭代器(iterator)进行.迭代器是一个变量,相当于容器和操纵容器的算法之间的中介.迭代器可以指向容器中的某个元素,通过迭代器就可以 ...
- c++迭代器iterator通用吗_「ES6基础」迭代器(iterator)
迭代器(iterator)是一个结构化的模式,用于从源以一次一个的方式提取数据.迭代器的使用可以极大地简化数据操作,于是ES6也向JS中添加了这个迭代器特性.新的数组方法和新的集合类型(如Set集合与 ...
- 如何得到iterator的当前元素_Java中迭代器Iterator详解
1.定义 Iterator的定义为:对Collection进行迭代的迭代器,Iterator取代了Java Collection Framework中的Enumeration.Iterator与Enu ...
- C++ - const 与 迭代器(iterator) 使用 详解
const 与 迭代器(iterator) 使用 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/16030561 迭代器(i ...
- java:迭代器Iterator
迭代器Iterator是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而不必暴露该对象内部细节的方法. 通过容器的 iterator()方 ...
- Java迭代器Iterator接口
迭代器 Iterator接口 迭代器的代码实现 增强for循环 Iterator接口 java.util.Iterator接口:(对集合进行遍历) 有两个常用方法 1.boolean hasNext( ...
- java for 迭代器_Java基础-迭代器Iterator与语法糖for-each
迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...
- Python中生成器generator和迭代器Iterator的使用方法
一.生成器 1. 生成器的定义 把所需要值得计算方法储存起来,不会先直接生成数值,而是等到什么时候使用什么时候生成,每次生成一个,减少计算机占用内存空间 2. 生成器的创建方式 第一种只要把一个列表生 ...
- java 迭代器的原理_Java集合框架迭代器Iterator实现原理解析
使用循环遍历集合 普通for循环 for(int i=0;i<10;i++){} 增强for循环 for(String str:list){} 什么是迭代器Iterator Iterator是J ...
- STL源码剖析 迭代器iterator的概念 和 traits编程技法
iterator模式定义如下:提供一种方法,使之能够依序巡访某个 聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式. STL的中心思想在于:将数据容器(containers)和算法(a ...
最新文章
- zabbix监控activemq队列脚本
- docker安装在服务器的那个位置,docker容器卷通常会放在什么位置
- [转]double free or corruption (!prev): 0x080644c8 ***
- 学机械可以转计算机吗,本人合工大车辆工程大一新生,但是机械类前景都不太好,我要不要转计算机,求教?...
- 【Python基础】学习Python 一定要吃透这 5 个内置函数
- AI:***一文读懂ML,DB/NLP/算法全有了……
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何
- 独家 | 2021双11背后的数据库硬核科技
- css3浏览,css3支持哪些浏览器?
- VMware ESXi 为虚拟机分配usb设备(硬盘)
- 【kafka】kafka 控制台 消费报错 cant rebalance afer 4 retries
- beoplay耳机序列号查询_BO Beoplay E8评测:真正无线耳机,可自定义EQ设置和透明模式!...
- Java中HttpClient设置超时时间
- iOS,多媒体,地图相关
- C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题
- 对象转map工具类BeanUtil
- [面试系列]牛客网前端社招面试
- C语言(静态链接库和动态链接库)
- matlab 汉字是方块,linux下Matlab 2020中文字体方框问题解决方法
- 程序员必修课-颈椎问题的预防
热门文章
- 上传Text文档并转换为PDF(解决乱码)
- FragmentActivity和Activity的区别
- sqlserver临时表操作
- BDT在Mac(10.8.3)下找不到libfreetype.6.dylib
- Visual Studio.NET 2008开发一册通--LINQ从基础到项目实战这本书怎么样
- 【转载】linux下如何使用sftp命令
- OpenCV 离散傅里叶变换
- 差距只是客观存在的事实,与服不服无关。
- 零基础快速入门web学习路线(含视频教程)
- 使用phpqrcode来生成二维码/thinkphp