迭代器是神马东西

一、迭代器用来干嘛的?

本质是指针,用来遍历访问容器中元素的。

STL实现了容器和算法的分离,如何实现的呢,答曰用类模板和函数模板,也可理解为所谓的泛化。那么容器和算法又是怎样结合在一起的呢,答曰迭代器——使用算法时,传给算法的是迭代器!

 

二、迭代器常用运算。

所有标准库容器的迭代器都提供*iter    iter->mem    ++iter   --iter    iter1 == iter2   iter1  !=  iter2等。

但是只有vector和deque支持 iter + n  iter – n  iter1 += iter2   iter1 – iter2   和  关系运算符。

从容器的存储方式上很好理解原因(连续 、 节点式/链式)。

 

三、迭代器的种类。

输入迭代器   输出迭代器   前向迭代器(slist)  双向迭代器(list)  随机访问迭代器(vector 、deque) 。

从迭代器支持的运算,或者从容器的存储结构上理解。如slist单向链表——只允许访问下一个元素;vector连续存储,可以访问任意一个(++ 、-- 、 iter + n等)。

 

四、为什么需要迭代器型别,如何实现迭代器型别的?

通过上面分析,我们知道迭代器将容器和算法结合在一起,给算法一个迭代器,可以完成相应操作,如果算法需要知道迭代器所指对象的类型呢?

我们想到用function template实现,但是如果返回值就要知道所指对象的型别,function template就不行了。

然后想到用内嵌型别,即将迭代器定义为class type,将所指对象类型value_type作为迭代器类的成员。但是原生指针不是class type,而算法必须能够接受原生指针,怎么办?

最终STL采用偏特化traits获取迭代器型别,即如果是原生指针,定义一个特化版本。

转载于:https://www.cnblogs.com/helloweworld/archive/2013/05/23/3095970.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的类方法和静态方法

类可以有类属性,也可以有类方法,类方法主要是对类属性的封装。是类对象所拥有的方法,需要用修饰器classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当…

LeetCode 第 201 场周赛(304/5614,前5.42%)

文章目录1. 比赛结果2. 题目1. LeetCode 5483. 整理字符串 easy2. LeetCode 5484. 找出第 N 个二进制字符串中的第 K 位 medium3. LeetCode 5471. 和为目标值的最大数目不重叠非空子数组数目 medium4. LeetCode 5486. 切棍子的最小成本 hard1. 比赛结果 做出来3题,…

洛克王国进不去 不显示服务器,《洛克王国》FAQ:注册和登陆问题

《洛克王国》FAQ:注册和登陆问题Q:如何登录洛克王国A: 1、 用户在洛克王国首页登录框中,输入自己的QQ号和密码后,点击“登录”按钮即可进入选择服务器界面。2、 洛克王国为用户提供了方便的选择服务器设定,…

出现一次的数字

看了何海涛的日志 他分别解决了一个 两个 三个 出现一次的数字的思路 给人的感觉有一生二 二生三 三生万物的思维 现把自己的感悟写下来 一个 思路很简单 所有数字异或的结果 两个 关键是区别 所有的数字异或的结果同时也是两个出现一次数字异或的结果 记为XORresult<>0 …

python中的__new__概念(工厂

__new__方法实际上在__init__方法之前执行&#xff0c;用于创建类的实例。然而__init__方法负责实例创建后对其进行自定义&#xff0c;__new__方法才是实际上创建并返回实例的方法。 __new__方法的第一个也是最重要的参数是创建实例所需的要的类(按照惯例&#xff0c;命名为cl…

LeetCode 723. 粉碎糖果(模拟)

文章目录1. 题目2. 解题1. 题目 这个问题是实现一个简单的消除算法。 给定一个二维整数数组 board 代表糖果所在的方格&#xff0c;不同的正整数 board[i][j] 代表不同种类的糖果&#xff0c;如果 board[i][j] 0 代表 (i, j) 这个位置是空的。 给定的方格是玩家移动后的游戏…

css动画放大延迟,css3延时动画

不太理解属性都是什么意思&#xff0c;但是有动画效果&#xff0c;我也是惊呆了#animated_div{animation:animated_div 4s 1;-moz-animation:animated_div 4s 1;-webkit-animation:animated_div 4s 1;-o-animation:animated_div 4s 1; width:800px; height:500px; position:rel…

Hibernate 异常org.hibernate.LazyInitializationException: could not initialize proxy - no Session

最近代写毕业设计中小网站&#xff0c;SSH架构&#xff0c;三年没搞过这个&#xff0c;忘记了&#xff0c;今天遇到这个问题就记录下&#xff1a; 错误页面提示 could not initialize proxy - no Session 控制台 org.hibernate.LazyInitializationException: could not initial…

python中的异常

异常处理就是处理程序中的错误。谓错误是指在程序运行的过程中发生的一些异常事件&#xff08;如&#xff1a;除0溢出&#xff0c;数组下标越界&#xff0c;所要读取的文件不存在等等&#xff09;。 在python中提供专门用于处理程序中错误的一种机制&#xff0c;异常机制&#…

css3案例分析,CSS3动画/动画库以及案例分析(上)

在这html5遍天下的年代&#xff0c;越来越多的网页也用到了css3的动画效果&#xff0c;这让原本我们静态的页面有了更多的活力。最近也一直在做这方面的页面&#xff0c;有些小小的心得&#xff0c;和诸位分享下。CSS3的动画绝对是很赞的&#xff0c;不仅支持PC还支持移动端&am…

python中获取异常描述与else用法

获取异常描述 异常本身是一个对象&#xff0c;所携带了关于错误的比较详细描述&#xff0c;如何获取异常详细描述信息呢&#xff1f; try: f open("log.txt","r") a 10 b 0 ret a / b #捕获多个类型的异常 except IOError as ex: …

LeetCode 418. 屏幕可显示句子的数量(DP)*

文章目录1. 题目2. 解题1. 题目 给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子&#xff0c;请你计算出给定句子可以在屏幕上完整显示的次数。 注意&#xff1a; 一个单词不能拆分成两行。 单词在句子中的顺序必须保持不变。 在一行中 的两个连续单词必须用…

网站服务器令牌获取,adobe - 获取Adobe Sign访问令牌以进行服务器到服务器身份验证 - 堆栈内存溢出...

_bananabread有正确的想法。 按照本网站上的步骤操作&#xff1a;直到您使用refresh_token获得JSON响应&#xff0c;这就是您所需要的。接下来&#xff0c;您需要制作刷新令牌请求&#xff0c;以便在每次需要使用它时刷新令牌&#xff0c;并返回一个全新的OAuth令牌。这是一个J…

try…finally与嵌套及自定义异常抛出

try...finally... try...finally...语句用来表达这样的情况&#xff1a;在程序中&#xff0c;如果一个段代码必须要执行&#xff0c;即无论异常是否产生都要执行&#xff0c;那么此时就需要使用finally。 比如文件关闭&#xff0c;释放锁&#xff0c;把数据库连接返还给连接池…

LeetCode 568. 最大休假天数(DP)

文章目录1. 题目2. 解题1. 题目 力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题。 但只工作不玩耍&#xff0c;聪明的孩子也会变傻&#xff0c;所以您可以在某些特定的城市和星期休假。 您的工作就是安排旅行使得最大化你可以休假的天数&#xff0c;但是您需要遵守…

安装数据库windows 安装redmine 详解

时间紧张&#xff0c;先记一笔&#xff0c;后续优化与完善。 近来公司有须要&#xff0c;要找一个项目管理工具&#xff0c;网上看了redmine还不错&#xff0c;终究项目经理选择了它&#xff0c;让我把平台给搭建起来并熟悉其中的功能。搭建的过程中超过了我的预计还破费了点工…

模块概念与使用及注意事项

1 模块概念 模块就是包含了python代码的文本文件&#xff0c;通俗讲&#xff0c;一个py文件就是一个模块。 2 使用模块(import) 比如&#xff0c;我们单独编写了一个模块&#xff0c;命名为mymodule.py&#xff0c;在该模块中我们定义一些函数和类&#xff0c;我们如何在test.…

魔兽世界转服务器显示完成,魔兽世界怀旧服:TAQ变简单了,为什么还是出现了AFK大潮?...

魔兽世界怀旧服在开服一年多以后&#xff0c;即将在2020年12月3日&#xff0c;迎来经典60年代的收官副本-第六阶段纳克萨玛斯大墓地(NAXX)。在差不多的时间段内&#xff0c;魔兽世界正式服也将上线全新的9.0版本-暗影国度。囧王者估计&#xff0c;在即将到来的12月份里面&#…

LeetCode 317. 离建筑物最近的距离(逆向BFS)*

文章目录1. 题目2. 解题2.1 正常思维BFS2.2 逆向思考BFS1. 题目 你是个房地产开发商&#xff0c;想要选择一片空地 建一栋大楼。 你想把这栋大楼够造在一个距离周边设施都比较方便的地方&#xff0c;通过调研&#xff0c;你希望从它出发能在 最短的距离和 内抵达周边全部的建筑…

Ubuntu 运行Asp.net MVC3

1 先通过SVN获取最新版的Asp.net MVC3代码 2 用Monodevelop打开后&#xff0c;进入Web项目的引用,删除标了红色的引用 3 添加引用“System.Web.Mvc.dll”和“System.Web.WebPages.Deployment.dll” 4 重新编译&#xff0c;然后删除Web项目的bin下的“Microsoft.Web.Infrastruct…