STL常用之vector,list,stack,queue,deque总结与对比

一,vector

1)底层

vector的底层是开辟出来的一块连续空间,类似于数组,每次空间满了之后会根据不同的编译器有不同的扩容倍数。

2)优劣

优点:随机访问效率高,因为地址是连续的,底层完全支持下标访问。

劣处:由于地址是连续,头插头删很麻烦,因为有元素的移动。扩容有空间的浪费和降低效率,扩容要重新开辟空间,并且要将元素全部复制过去,并且无法按需申请。

二,list

1)底层

list底层是带头双向链表,哨兵位的prv指针指向最后一个元素,最后一个元素的next指针指向第一个元素,地址不连续。

2)优劣

优点:删除任何一个元素效率很高,只需要改变指针的指向即可,没有空间的浪费,扩容效率高,按需申请即可。

劣处:随机访问效率低,因为地址是不连续的,需要STL内部封装++,--等操作符。

三,deque

1)底层

deque的底层是vector和list的结合,空间是许多块连续空间的地址组成的,也就是有一定的顺序但并不完全有序。

2)优劣

deque是vector和list的结合体,相较来说优劣与list和vector来说并不明显,比较中庸。

四,stack与queue
1)底层

stack和vector的底层是可以指定容器的,一般是前面三种容器,默认是deque,我们来看一下C++官网对它们的参数介绍

四,总结

没有哪一种容器是绝对优秀的,在使用的时候我们需要根据自己的需求来判断使用什么容器,比如删除插入频繁扩容频繁建议使用list,如果有很强的随机访问需求建议使用vector,如果兼有这些需求建议使用deque。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非洲下暴雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值