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 ...
随机推荐
- 爆出的法拉第未来(Faraday Future,以下简称“FF”)
在本次融资"乌龙"之前,FF已经传出过两次融资消息,传闻对象既有印度大型财团,也是捷豹路虎的控股方塔塔集团,也有香港李嘉诚之子"小巨人"李泽楷,但最后都被各方否 ...
- Summary: Prime
最近遇到很多问题都跟Prime有关,于是总结一下: Prime definition:A prime number (or a prime) is a natural number greater t ...
- sql 事务运用实例
------------------------------ create proc SaveFinancialProduct@FinancialName nvarchar(50),--产品名称@Yi ...
- JSON—序列化
表单数据的序列化 用SerializeArray()将有效控件序列化为JSON对象数组? 包含name和value两个属性 SerializeArray()检测一组表单元素中的有效控件? 1.没有 ...
- VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程 ...
- Linux基础命令---dumpe2fs
dumpe2fs 显示ext2.ext3.ext4文件系统的超级快和块组信息.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- PHP二维数组排序(感谢滔哥lvtao.net)
滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...
- Python3.x:关于urllib中urlopen报错问题的解决方案
Python3.x:关于urllib中urlopen报错问题的解决方案 调用:urllib.urlopen(url) 报错:AttributeError: 'module' object has no ...
- vc编辑器常用设置
代码格式化 1.选中代码: 2.ctrl+K: 3.ctrl+F; 显示行号
- 更改 Centos 6 的 yum 源
1.查看当前使用的源: yum repolist all 阿里源网址,使用方法点右边的帮助可以看到:https://opsx.alibaba.com/mirror 2.更改源: 第一步:备份你的原镜像 ...