iterator_教程中的讲解
ZC: 在讲 vector的时候讲到的
1、分类:
(1)、输入(只读) 只支持一遍算法
(2)、输出(只写) 只支持一遍算法
(3)、正向 可对一个值进行多次读写 ==> 相当于 输入迭代器+输出迭代器 的功能组合
(4)、双向 正向迭代器+向后? 应该既能向前又能向后移动吧(但是一次只能移动一个位置)?
(5)、随机 双向迭代器+向前/向后跳过任意个位置.任何位置
2、支持的操作:
①双向迭代器
it++, +it, it--, --it, *it,
itA=itB, itA==itB, itA!=itB
◆ list, set, multiset, map, multimap 支持双向迭代器
②随机迭代器
双向迭代器 的所有操作
其它的操作:
it+=i, it-=i, it+i(或it=it+i)(ZC: 这两货不一样吧?), it[i],
itA<itB, itA<=itB, itA>itB, itA>=itB
◆ vector deque(queue,stack) 支持随机访问迭代器
3、
++it 返回 引用 效率高
it++ 返回 值 效率低
4、
通过 “iterator == 容器实例.end()” 来判断 迭代器是否指向了 最后一个元素的后面
ZC: “reverseIterator == 容器实例.rend()”
4.1、在循环中,用“iterator == 容器实例.end()”来作为 循环是否结束的依据。
4.2、在 if 中,用“iterator == 容器实例.end()”来判断 返回的 iterator 是否为空。
5、
vector<T>::const_iterator
vector<T>::const_reverse_iterator
vector<T>::iterator
vector<T>::reverse_iterator
5.1、容器中的 insert(...) 和 erase(...) 仅接受 iterator
5.2、<<Effective STL>>中建议,用 iterator 取代另外3种
6、
ZC: 第7讲【39:40】左右,iterator作为参数时,注意 "++it"和"it++"的区别,别用错了。前者是 自增之后再传入函数,后者是先传入函数 等函数运行结束之后再自增。
7、数组指针 ==> iterator
类似 “vector<T> vecT(iteratorBegin, iteratorEnd);”这样的构造函数,构造函数的参数 可以传数组指针。数组指针在特定情况下可以当做迭代器使用。
8、
iterator_教程中的讲解的更多相关文章
- i3D的一篇Unity教程中的笔记
原地址:http://blog.sina.com.cn/s/blog_72b936d80100wwej.html 以下是i3D的一篇Unity教程中的笔记. i3D的这篇教程是[i3D.Next-Ge ...
- Teradata基础教程中的数据库试验环境脚本
Teradata基础教程中的数据库表: Customer: 客户信息表 Location: 位置信息表 Employee: 雇员信息表 Job: 工作信息表 Department: 部门表 ...
- Swift语言教程中文文档
Swift语言教程中文文档 Swift语言教程(一)基础数据类型 Swift语言教程(二)基础数据类型 Swift语言教程(三)集合类型 Swift语言教程(四) 集合类型 Swift语言教程(五)控 ...
- GEF-whole-upload教程中遇到的问题及解决方案
最近在学习GEF开发,使用的是GEF-whole-upload这个教程.由于教程当时所使用的版本与本人使用的版本有一些差异,中间出现了不少问题,现在将解决方案分享给大家. 本人使用的Eclipse版本 ...
- [转]11个教程中不常被提及的JavaScript小技巧
原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...
- 简明的Python教程中的几个疑惑点分析#2
#1简明的Python教程当中第十四章Python标准库介绍中的使用sys模块 假如你没看懂sys模块这一章节,那么没关系,看下面一段代码再看简明的Python教程中的sys模块实例你将很容易看懂 代 ...
- 11个教程中不常被提及的JavaScript小技巧
这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日常工作中经常出现,但是我们又很容易忽略. 1.过滤唯一值 Set类型是在ES6中新增的,它类似于数组,但是 ...
- Django 基础教程中的Django表单
在 urls.py 中对应写上这个函数,教程中给的Django 1.7x以下的,我的时2.0.7,应该为 from django.contrib import admin from django.ur ...
- MVC4学习之官方教程中迁移版本库报错
因工作需要,学习MVC4,但是微软官方教程中迁移版本库步骤在本地测试报错 官方教程地址:http://www.asp.net/mvc/overview/older-versions/getting-s ...
随机推荐
- C#webBrowser使用代理服务器的方法winform
其实在C#中使用webBrowser大家应该都会了,论坛也有很多相前的例子大家可以查询一下就知道了但是像直接使用浏览器一样设置代理 的方法可能很多人还不知道吧.这个其实是调用一个Dll文件进行设置的, ...
- C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还 ...
- jmeter bean shell断言加密的响应信息(加密接口测试二)
断言加密的响应信息 1.在http请求-->添加-->断言-->bean shell 断言 import com.changfu.EncryptAndDecryptInterface ...
- Twitter OA prepare: Equilibrium index of an array
Equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to ...
- Integer类之缓存
在开始详细的说明问题之前,我们先看一段代码 1 public static void compare1(){ 2 Integer i1 = 127, i2 = 127, i3 = 128, i4 = ...
- YUV编码格式
YUV是被欧洲电视系统采用的一种颜色编码方法.在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄像机取像,然后把取 得的彩色图像信号经过分色,分别放大校正后得到RGB,在经过矩阵变换电路,得到 ...
- HZNU_TI1050 训练实录
菜鸡队训练实录 比赛记录:[名称:奖项 / 排名] 2018: ZJPSC Bronze / 86 CCPC Jilin ...
- 主成分分析(PCA)学习笔记
这两天学习了吴恩达老师机器学习中的主成分分析法(Principal Component Analysis, PCA),PCA是一种常用的降维方法.这里对PCA算法做一个小笔记,并利用python完成对 ...
- Linux服务器---apache支持SSL
Apache支持ssl 1.检测是否安装ssl模块,如果没有就安装 [root@localhost cgi-bin]# rpm -qa | grep mod_ssl //查看是否安 ...
- mysql-innodb的事务日志
[参考书籍:mysql技术内幕 INNODB存储引擎][参考了一些博客内容] 事务的隔离性由锁机制来实现,事务的原子性,一致性,持久性通过INNODB的redo log和undo log来完成. re ...