面试题:vector、deque和list的区别

vector的特点:

动态数组,内存连续,以2倍的方式进行扩容,reserve、resize

在新的内存上拷贝构造新的对象,再把老内存上的对象析构,释放内存,扩容的效率很低

deque的特点:

是一个动态开辟的二维数组空间,第二位是固定长度的数组空间,扩容:第一维的数组进行2倍扩容

deque底层内存是否是连续的??? 

 并不是全部连续的,是分段连续,每一个第二维是连续的

vector和deque之间的区别: 

     1、底层结构不一样:vector的底层是一段内存连续的动态数组,而deque则是一个动态开辟的二维数组
    2、前中后插入删除元素的时间复杂度不一样:中间和末尾都是O(1),前 deque是O(1),vector是O(n)
    3、对内存的使用效率:
    vector的使用效率较低,vector要求内存空间必须连续,而deque可以分块进行数据存储,不需要内存空间必须连续

 在中间进行插入和删除,vector和deque哪个效率更高??

由于deque的第二维内存空间不是连续的,所以在deque中间进行元素的insert或者erase,造成元素移动的时候比vector慢 

vector和list的区别: 

1、底层结构:vector的底层是一块内存连续的动态数组,而list是一个双向循环链表

2、vector:增加删除O(n)  查询O(n) 随机访问O(1)
      list:增加删除O(1)(需要考虑查询,查询O(1)) 随机访问O(n)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值