STL容器的小总结

Vector-向量数组

一般是维了解决程序定义的数组是不能动态地改变大小这个缺点而出现的。一般程序实现是在类创建的时候同时创建一个定长数组,随着数据不断被写入,一旦数据被填满,则重新开辟一块更大的内存区,把原有数据复制到新的内存区,抛弃原有的内存。

List-双向链表

它的优势在于动态增长和删除的能力,对于内存的清除、查找、随机访问比较费力,需要一个个进行遍历。

Deque-双向队列

拥有Vector和List两者的优点的双端队列,在建立deque容器的时候,一般便随着建立空间,就会建立数据,然后建立新空间,填充新的数据,没有原空间数据的删除和复制,是由多个连续的内存空间组成的。

它并不像Vector一样把所有的对象都保存在一个连续的内存块中,而是多个连续的内存块中,并且在一个映射结构中保存对这些块以及顺序的跟踪。

相比Vector

  • 存取和迭代器的操作会比较慢一点
  • 迭代器是特殊的智能指针,需要在不同的区块之间进行跳转
  • 可包含更多的元素,因为使用不止一块内存
在其他的地方进行插入、删除操作会使所有指向deque的元素的pointers、reference、iterator失效


讨论:所以通常对Vector和List进行push_back的时候,Vector的效率会比List高。又一个特殊情况,在Vector数组被填满的时候,这个时候再push_back时,此时List的效率会高一点,因为此时Vector需要重新开辟一块更大的内存区,会对原空间的数据进行复制和删除操作,因而会影响效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Kevin_LBJ_dream

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

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

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

打赏作者

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

抵扣说明:

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

余额充值