全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

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

发布时间:2023-10-13 01:39:53
发布人:xqq

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

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

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

延伸阅读:

二、vector的内存管理与效率

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

#it技术干货

相关文章

在Nodejs中使用MySQL数据库的优异实践是什么?

在Nodejs中使用MySQL数据库的优异实践是什么?

2023-10-13
怎样把excel里的数据怎样批量通过网页查询再导入到表格中?

怎样把excel里的数据怎样批量通过网页查询再导入到表格中?

2023-10-13
怎样操作leveldb数据库,实现增删改查?

怎样操作leveldb数据库,实现增删改查?

2023-10-13
mysql如果单表数据量过千万怎么办?

mysql如果单表数据量过千万怎么办?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取