文章目录

  • 迭代器简介
  • 迭代器的定义
  • 迭代器的分类
  • 迭代器的使用

迭代器简介

是用来指向、遍历。修改容器元素的变量,类似于指针。
可以迭代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相关推荐

  1. C++中的迭代器(STL迭代器)iterator

    1.Cpp中的迭代器 要访问顺序容器和关联容器中的元素,需要通过迭代器(iterator)进行.迭代器是一个变量,相当于容器和操纵容器的算法之间的中介.迭代器可以指向容器中的某个元素,通过迭代器就可以 ...

  2. c++迭代器iterator通用吗_「ES6基础」迭代器(iterator)

    迭代器(iterator)是一个结构化的模式,用于从源以一次一个的方式提取数据.迭代器的使用可以极大地简化数据操作,于是ES6也向JS中添加了这个迭代器特性.新的数组方法和新的集合类型(如Set集合与 ...

  3. 如何得到iterator的当前元素_Java中迭代器Iterator详解

    1.定义 Iterator的定义为:对Collection进行迭代的迭代器,Iterator取代了Java Collection Framework中的Enumeration.Iterator与Enu ...

  4. C++ - const 与 迭代器(iterator) 使用 详解

    const 与 迭代器(iterator) 使用 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/16030561 迭代器(i ...

  5. java:迭代器Iterator

    迭代器Iterator是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而不必暴露该对象内部细节的方法. 通过容器的 iterator()方 ...

  6. Java迭代器Iterator接口

    迭代器 Iterator接口 迭代器的代码实现 增强for循环 Iterator接口 java.util.Iterator接口:(对集合进行遍历) 有两个常用方法 1.boolean hasNext( ...

  7. java for 迭代器_Java基础-迭代器Iterator与语法糖for-each

    迭代器Iterator与语法糖for-each 一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际 ...

  8. Python中生成器generator和迭代器Iterator的使用方法

    一.生成器 1. 生成器的定义 把所需要值得计算方法储存起来,不会先直接生成数值,而是等到什么时候使用什么时候生成,每次生成一个,减少计算机占用内存空间 2. 生成器的创建方式 第一种只要把一个列表生 ...

  9. java 迭代器的原理_Java集合框架迭代器Iterator实现原理解析

    使用循环遍历集合 普通for循环 for(int i=0;i<10;i++){} 增强for循环 for(String str:list){} 什么是迭代器Iterator Iterator是J ...

  10. STL源码剖析 迭代器iterator的概念 和 traits编程技法

    iterator模式定义如下:提供一种方法,使之能够依序巡访某个 聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式. STL的中心思想在于:将数据容器(containers)和算法(a ...

最新文章

  1. zabbix监控activemq队列脚本
  2. docker安装在服务器的那个位置,docker容器卷通常会放在什么位置
  3. [转]double free or corruption (!prev): 0x080644c8 ***
  4. 学机械可以转计算机吗,本人合工大车辆工程大一新生,但是机械类前景都不太好,我要不要转计算机,求教?...
  5. 【Python基础】学习Python 一定要吃透这 5 个内置函数
  6. AI:***一文读懂ML,DB/NLP/算法全有了……
  7. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何
  8. 独家 | 2021双11背后的数据库硬核科技
  9. css3浏览,css3支持哪些浏览器?
  10. VMware ESXi 为虚拟机分配usb设备(硬盘)
  11. 【kafka】kafka 控制台 消费报错 cant rebalance afer 4 retries
  12. beoplay耳机序列号查询_BO Beoplay E8评测:真正无线耳机,可自定义EQ设置和透明模式!...
  13. Java中HttpClient设置超时时间
  14. iOS,多媒体,地图相关
  15. C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题
  16. 对象转map工具类BeanUtil
  17. [面试系列]牛客网前端社招面试
  18. C语言(静态链接库和动态链接库)
  19. matlab 汉字是方块,linux下Matlab 2020中文字体方框问题解决方法
  20. 程序员必修课-颈椎问题的预防

热门文章

  1. 上传Text文档并转换为PDF(解决乱码)
  2. FragmentActivity和Activity的区别
  3. sqlserver临时表操作
  4. BDT在Mac(10.8.3)下找不到libfreetype.6.dylib
  5. Visual Studio.NET 2008开发一册通--LINQ从基础到项目实战这本书怎么样
  6. 【转载】linux下如何使用sftp命令
  7. OpenCV 离散傅里叶变换
  8. 差距只是客观存在的事实,与服不服无关。
  9. 零基础快速入门web学习路线(含视频教程)
  10. 使用phpqrcode来生成二维码/thinkphp