文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何理解c++下迭代器

2023-06-22 04:29

关注

这篇文章给大家介绍如何理解c++下迭代器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1. 迭代器介绍

本章并不研究不同类型的迭代器,只总结常见迭代器的使用和误区。

定义:迭代器(iterator)有时又称光标(cursor),是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍历的接口,设计人员无需关心容器对象的内存分配的实现细节。

背景:指针可以用来遍历存储空间连续的数据结构,但是对于非连续存储的数据结构,就需要一个行为类似于指针的类,来对非连续数据结构进行遍历。正如定义里标红所说,迭代器可以遍历非连续的数据结构。

在C++中,我们更倾向于使用迭代器而不是使用下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只有少数容器(如vector)支持下标操作访问容器元素。

2. 初始化

每种容器都定义了自己的迭代器类型,可以使用auto自动声明迭代器的类型,也可以显示的将迭代器类型写出来:

//只有顺序容器(不包括array)的构造函数才接受大小参数vector<int> vec(num, val);vector<int>::iterator it = vec.begin();//auto it = vec.begin();

3. 常用操作

下面表格列出了迭代器的常用操作:

*iter解引用,返回迭代器指向的元素的引用
iter->member等效于(*iter).member
++iter, iter++iter + 1,指向容器的下一个元素
–iter, iter–同上
iter1 == iter2比较两个迭代器是否相等
iter1 != iter2

在C++定义的容器类型中,只有vector,string和queue容器提供迭代器算术运算和除!=和==之外的关系运算:

iter + n, iter - n迭代器+或-一个常数,必须指向容器内或尾后元素(end())
iter1 += iter2同上
iter1 -= iter2同上
iter1 - iter2获得两个迭代器之间的距离
>, >=, <, <=元素靠后的迭代器大于靠前的迭代器

注意:

迭代器并不是所有都可以进行加减常数。 能进行算数运算的迭代器只有随机访问迭代器。要求容器元素存储在连续空间内;即vector、string、deque的迭代器是有加减法的;但是list、forward_list、map、set的迭代器是没有加减法的,它们仅支持++iter、–iter这些操作。 it++和++it的区别

在STL中的容器使用迭代器进行遍历时,it++与++it的效果是相同的,遍历的次数也是相同的,但是在STL中效率却不同:

++it返回的是引用;it++返回的是临时对象;–it同理。

原因:it++每次都要返回一个无用的临时对象,所以每一次遍历,你都进行了一次创建并销毁对象的操作。(leetcode小本本记好了!)

关于如何理解c++下迭代器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯