首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
在看机会的安哥拉兔很靠谱
同济大学 Java
发布于河南
关注
已关注
取消关注
@HellowordX:
C++面试高频(六)之<STL>
1. vector list异同⭐⭐ List: List是一个双向链表的容器,每个元素都由一个节点表示,节点包含指向前一个节点和后一个节点的指针。 插入和删除元素的时间复杂度为O(1),因为只需要改变节点的指针,而不需要移动其他元素。 由于节点间的指针关联,内存空间不是连续分配的,因此对于需要频繁的插入和删除操作的场景,list可以更高效。 在访问元素方面,由于不具备随机访问特性,只能通过迭代器逐个遍历,时间复杂度为O(n)。 list可以有效地处理大规模数据的插入和删除,但相对于vector来说占用更多的内存空间。 Vector: Vector是一个动态数组的容器,元素的存储是连续的。 插入和删除元素的时间复杂度为O(n),因为可能需要移动其他元素,尤其是在中间位置插入或删除元素时。 在访问元素方面,由于具备随机访问特性,可以通过下标访问元素,时间复杂度为O(1)。 向量的扩容和收缩可能会导致内存的重新分配和元素的复制,因此在需要频繁插入和删除的场景下效率较低。 向量的内存空间是连续分配的,因此对于需要高效的随机访问操作的场景,vector更合适。 相对于list来说,vector在占用内存空间方面更为节省。 总结: 综上所述,list适用于需要频繁插入和删除元素的场景,对内存占用要求较高;vector适用于需要高效的随机访问和尾部插入操作的场景,对内存占用要求较低。选择合适的容器类型取决于具体的需求和对性能的要求。 2 .vector的底层实现⭐⭐ 1、底层实现 Vector在堆中分配了一段连续的内存空间来存放元素。 包括三个迭代器,first 指向的是vector中对象的起始字节位置;last指向当前最后一个元素的末尾字节;end指向整个vector容器所占用内存空间的末尾字节。 vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新的元素。vector的关键技术在于对大小的控制以及重新分配时的数据移动效率。 vector采用的数据结构是线性的连续空间(泛型的动态类型顺序表),他以两个迭代器start和finish分别指向配置得来的连续空间中目前已将被使用的空间。迭代器end_of_storage指向整个连续的尾部。 vector在增加元素时,如果超过自身最大的容量,vector则将自身的容量扩充为原来的两倍。扩充空间需要经过的步骤:重新配置空间,元素移动,释放旧的内存空间。一旦vector空间重新配置,则指向原来vector的所有迭代器都失效了,因为vector的地址改变了。 3 .vector和deque的区别⭐⭐⭐ Deque(双端队列)的特点可以总结如下: 双端操作:可以在头部和尾部进行高效的插入和删除操作。 分段结构:内部实现采用分段的数据结构,只需要移动对应段内的元素,而不需要移动整个容器中的元素。 随机访问:支持通过索引进行随机访问,可以在常量时间内访问任意位置的元素。 迭代器稳定性:插入和删除不会使已存在的迭代器失效。 增长特性:根据需要自动增长内部存储空间。 内存分配效率:在增加新的段时分配更多的内存空间,提高内存利用效率。 Deque和vector的区别 Deque(双端队列)和Vector之间的区别可以概括如下:⭐⭐⭐ 插入和删除操作:Deque支持在头部和尾部高效地插入和删除元素,而Vector只能在尾部进行高效操作。 内部实现:Deque采用分段的数据结构,而Vector是一块连续的存储空间。 内存分配方式:Deque在扩容时能更高效地利用内存,并避免频繁的重分配,而Vector需要重新分配整块连续的内存空间。 随机访问性能:Vector的随机访问性能更好,而Deque的随机访问相对较低。 Deque和vector和LIST使用场景:⭐⭐ 如果需要高效的随即存取,而不需要在乎插入和删除的效率,使用 vector; 如果需要大量的插入和删除,而不需要关心随即存取,则应使用 list; 如果需要随即存取,而且需要关心两端数据的插入和删除,则应使用 deque。 4.为什么ist里面还要再定义一个sort函数⭐ 1.整个STL设计的指导思想是GP,即模板编程。在此思想的指导下,少了面向象编程的类继承、虚函数、多态等的设计,取而代之的是数据与方法的分离,表现在STL中将容器与算法分离,两者分别闭门造车,中间依靠迭代器联系。 2.故sort算法被单独剥离出来,与所有的容器分开。虽然想的挺好但是总有例外,list容器就是那个例外。从源码可以看出,sort函数用到的迭代器的操作链表是不可能做到的,故list需要设计自己的sort函数。 5 .STL底层数据结构实现⭐ Vector(动态数组) 底层数据结构为数组,支持快速随机访问和动态大小调整。 List(双向链表) 底层数据结构为链表,支持快速插入和删除
点赞 4
评论 7
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 11:16
已编辑
美团_核心本地商业_QA(实习员工)
腾讯wxg测开 提前批一面
秋招第一面,也是我这个双非底边废物第一次面wxg,就当作是收集游戏成就一样,也没怎么认真准备,所以大概率也是最后一次面wxg了 时间大概45min 自我介绍 拷打实习,不过貌似对我实习做的东西不是很感兴趣,后面反问的时候才知道他们是工具组,招的是写代码的人 拷打项目,问项目上线没有,遂答没有,又反问为啥不上线……扯了很多,顺着项目简单穿插了几个八股问题 算法很简单,手写快排。这哥们出完算法题就搁那玩手机了,可能是周五晚上还得面试候选人,对老板心存怨念吧。写完之后我就静静地看着他低头刷手机,反正混时间呗,我可以陪着一起混,只要我不说话他就不会给我出新的算法题哈哈 反问,这下才知道他们其实是工具...
投递腾讯等公司10个岗位
点赞
评论
收藏
分享
08-01 16:17
魔门塔(苏州)科技有限公司_感知算法工程师(准入职员工)
Momenta内推
offer就和抢演唱会票一样,抢完第一波之后等回流了,大佬拿着再多意向书,最后也只能签一个,,越厉害的,拿的offer越多,且都是非线性增长的,只要上面的人释放完意向,紧接着链式反应,大家都会有有offer的,其实最难的不是offer,而是进入了公司,发现累的要死,很多同学进入了工作后,朋友圈就没有更新过了,所以大家在签约的时候一定要打听清楚! 目前的重点还是先尽量投,尽量拿到!给大家详细聊一聊公司上班细节,大家可以评估下自己来了能否适应。智驾整体强度都比较大,因为基本都算初创公司,还没做到能躺着收钱的地步,凡事看两面,压力大但是能学到东西,不至于说每天干重复的东西么没有提示,工作时间10am...
Momenta公司福利 626人发布
点赞
评论
收藏
分享
07-13 19:16
洛阳师范学院 Java
明天准备开始投实习简历了,大佬们看看有什么好建议,
点赞
评论
收藏
分享
06-08 22:25
门头沟学院 Java
有谁遇到这情况?
跟人机一样的hr
从零开始的转码生活:
这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞
评论
收藏
分享
07-29 14:09
门头沟学院 Java
感谢oppo收留
我爱o泡我爱o泡o泡果奶ooo
26加瓦鼠鼠:
三个offer了,停手吧,回头是岸
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
5674
2
...
虾皮秋招一面
3002
3
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2327
4
...
百度提前批 三面
2170
5
...
小鹏offer
1490
6
...
虾皮一面凉经
1382
7
...
被猿辅导挂了简历,但我想说...
1331
8
...
最强本科✌
1193
9
...
上班一周,工资还没拿,先欠公司两千
1150
10
...
大学四年,我感觉我像个“孤勇者”
1100
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29150次浏览
816人参与
#
秋招被确诊为……
#
163896次浏览
751人参与
#
中兴秋招
#
205497次浏览
2294人参与
#
工作中哪个瞬间让你想离职
#
63410次浏览
569人参与
#
你最希望上岸的公司是?
#
135120次浏览
705人参与
#
和同事相处最忌讳的是__
#
24205次浏览
244人参与
#
25届网易互娱暑实进度
#
78391次浏览
702人参与
#
虾皮求职进展汇总
#
249257次浏览
1852人参与
#
投格力的你,拿到offer了吗?
#
86693次浏览
583人参与
#
2022毕业即失业取暖地
#
102693次浏览
662人参与
#
2022毕业生求职现身说法
#
89266次浏览
700人参与
#
秋招OC许愿
#
327782次浏览
2450人参与
#
你最近一次加班是什么时候?
#
70987次浏览
350人参与
#
26届的你,投了哪些公司?
#
44379次浏览
494人参与
#
你的秋招第一面感觉怎么样
#
76842次浏览
591人参与
#
柠檬微趣工作体验
#
6708次浏览
40人参与
#
你遇到最难的面试题目是_
#
16523次浏览
201人参与
#
我对___祛魅了
#
48019次浏览
438人参与
#
地平线求职进展汇总
#
52644次浏览
369人参与
#
研究所VS国企,该如何选
#
194806次浏览
1819人参与
#
如果校招重来我最想改变的是
#
271858次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务