三种顺序容器的比较

vector:矢量容器

  •  插入:push_back(尾插)   O(1)    

                    insert (按位置插入)  O(n)

  • 删除:pop_back(尾删)O(1)

                  erase(按位置删)  O(n)

  • 访问:O(1)

优点:尾部操作和随机访问速度快

缺点:不支持头插、任意位置删除和插入复杂度较高

扩容方式:

1.倍数开辟二倍的内存

2.旧的数据拷贝到新内存

3.释放旧的内存

4.指向新的内存

list 双向循环链表 

  • 插入:insert (按位置插入)  O(1)

                 push_front (头插)  O(1)

                 push_back(尾插)O(1)

  • 删除:pop_back(尾删)O(1)

                 pop_front(头删)O(1)

                 erase(按位置删)O(1)

  • 访问:  O(n)

优点:插入和删除的速度快

缺点:访问速度慢,不支持系统默认的sort排序,内存不连续

deque

deque 容器底层不连续,deque的迭代器将其连续

  • 插入:push_back(尾插)  O(1)

                  push_front(头插)  O(1)

                  insert (按位置插)    O(n)

  • 删除:pop_back(尾删)O(1)

                  pop_front(头删)O(1)

                 erase(按位置删) O(n)

  • 访问:O(1)

优点:头尾插入和删除以及访问速度快

缺点:按位置插入和删除速度慢

扩容:

deque的扩容包含两部分,数据区域以及映射区域的扩容

数据区域扩容:数据区域的指针指向数据区域的中间,保证头部有空间,数据区域满时对映射区域进行调整,在合适的位置开辟新的数据区域

映射区域扩容:映射区域中已使用的映射区移到中间,保证上下游空闲的位置。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值