千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > vector, list, map等容器使用场合是什么?

vector, list, map等容器使用场合是什么?

来源:千锋教育
发布人:xqq
时间: 2023-10-13 01:39:53 1697132393

一、vector, list, map等容器使用场合

vector适用于对象简单,变化较小,并且频繁随机访问的场景。list适用经常进行插入和删除并且不经常随机访问的场景。map主要用于资料一对一映射的情况,map内部自建一棵红黑树,这棵树具有对数据自动排序的功能。以在map内部所有的数据都是有序的。比如一个班级中,每个学生的学号跟他的姓名就存在着一对一映射的关系。

list封装链表,以链表形式实现,不支持[]运算符。对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向)。新添加的元素,list可以任意加入。vector封装数组,使用连续内存存储,支持[]运算符。对随机访问的速度很快,对头插元素速度很慢,尾插元素速度很快新添加的元素,vector有一套算法。map采用平衡检索二叉树:红黑树存储结构为键值对

延伸阅读:

二、vector的内存管理与效率

当元素需要插入且容器的容量不足时会发生重新分配。这会导致vector的原始内存分配和回收、对象的拷贝和析构和迭代器、指针和引用的失效。
问题产生的原因:vector容器分配的是一块连续的内存空间,每次容器的增长,并不是在原有连续的内存空间后再进行简单的叠加,而是重新申请一块更大的新内存(一般是当前大小的1.5~2倍的新内存区),并把现有容器中的元素逐个复制过去,同时销毁旧的内存。
问题解决方法
提前使用reserve()函数设定容器大小,在vector操作的末尾添加vector().swap(v)来修正过剩的空间或内存。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT