list vector deque的区别

1.vector数据结构
vector和数组类似,拥有一段连续的内存空间,并且起始地址不变
因此 能高效的进行随机存取, 时间复杂度为o(1) ;
但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。

另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。


2.list数据结构
list是由双向链表实现的,因此内存空间是不连续的。
只能通过指针访问数据,因为需要遍历,所以list的随机存取非常没有效率,时间复杂度为o(n);
由于链表的特点,能高效地进行插入和删除

优点: (1) 不使用连续内存完成动态操作。
                (2) 在内部方便的进行插入和删除操作
          (3) 可在两端进行push、pop
 缺点: (1) 不能进行内部的随机访问,即不支持[ ]操作符和vector.at()
            (2) 相对于verctor占用内存多

3.deque
    连续存储结构,即其每个元素在内存上也是连续的,类似于vector,不同之处在于,deque提供了两级数组结构, 第一级完全类似于vector,代表实际容器;另一级维护容器的首位地址。这样,deque除了具有vector的所有功能外,还支持高效的首/尾端插入/删除操作。
    deque   双端队列 double-end queue
    deque是在功能上合并了vector和list。
    优点:(1) 随机访问方便,即支持[ ]操作符和vector.at()
                (2) 在内部方便的进行插入和删除操作
                (3) 可在两端进行push、pop
    缺点:占用内存多


使用区别:
             (1)如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
             (2)如果你需要大量的插入和删除,而不关心随机存取,则应使用list
             (3)如果你需要随机存取,而且关心两端数据的插入和删除,则应使用deque

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值