STL学习笔记(3)- STL容器和使用场景

STL的容器主要分为两类,一类是序列式容器,包括vectordequelist等;一类是关联式容器,包括setmultisetmapmultimap。下面主要对容器进行一下说明

容器vectordequelistsetmultisetmapmultimap
经典内部结构内存连续的空间多个内存连续的空间双向链表二叉树二叉树二叉树二叉树
元素ValueValueValueValueValueKey-ValueKey-Value
元素可重复Key不能重复
元素的搜寻速度非常慢对Key快对Key快
元素插入尾插头部和尾部任何位置插入----
  • vector 插入时从尾部插入,删除时不删除存储空间,如果插入元素时超过预留的空间大小会以2倍的方式扩容后进行数据拷贝并存储。数据读取速度较快,元素尾插速度较快,中间插入或者删除速度非常慢。使用场合,如软件的操作历史等。
  • deque 支持头部和尾部插入,尾部的插入/删除速度快,同vector一样,中间插入或者删除速度慢。使用场合,排队等场合。
  • vector和deque比较
    (1) vector.at()deque.at() 效率高。
    (2) 如果有大量释放操作 vector 的花费时间更少。
    (3) deque 支持头部的快速插入和移除
  • set 内部实现使用 红黑树,元素插入速度慢,查找速度非常快,因为采用红黑树的结构查找时对数据进行了减支,不允许数据重复。而当数据插入时,需要进行二叉树的平衡和排序的问题,因此插入比较慢。应用场合:对数据有排序的要求,比如游戏个人得分排行等。
  • map 实现同样采用红黑树,使用 Key-Value键值对的形式。适用场合:大数据量的时候,使用ID查找用户等。

作者:douzhq
个人主页:https://www.douzhq.cn
文章同步页:https://douzhq.cn/stl_containerbrief/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值