<四>vector、deque、list对比
  xs9mrAcZVTZn 2023年11月02日 76 0
C++

vector和deque之间的区别?
vector:底层动态数组,内存连续,二倍方式扩容
vector vec;默认是没有开辟空间的, 0->1->2->4->8->16 可以用reserve(20) 只开辟空间,没有放置元素

deque:动态开辟的二维数组空间,第二维是固定长度的空间,扩容的时候,是将第一维数组进行二倍扩容,在把二维的数据
空间放到新的第一维的数组空间里

deque:底层存储空间是否连续? 不是, 但是每一个第二维空间是连续的. 所有的二维是分段的.

vector和deque
1:底层数据结构不一样
2:前中后插入删除元素时间复杂度:
中间和末尾的插入和删除的时间复杂度是一样的,末尾(O(1)),中间O(N)
deque前面插入删除O(1), vector前面插入删除O(N)
3:对内存的使用效率: vector 需要的内存空间必须连续
deque 的第二维是连续的,但是每个第二维不需要连续.因此可以分块存储,不需要一大片连续的存储空间.
4:在空间进行insert或者erase,vector和deque 他们的效率那个好一些? 都是O(N) vector由于是连续的空间,移动更高效

vector和list
list:底层是双向双向循环链表
vector 插入,删除,查找 O(N), 随机访问 O(1);
list:链表 插入删除时O(1)但是需要考虑搜索的时间O(N),链表的搜索是比较慢的

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   2024年05月01日   82   0   0 C++
  BYaHC1OPAeY4   2024年05月08日   58   0   0 C++
  yZdUbUDB8h5t   2024年05月05日   44   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   62   0   0 C++
xs9mrAcZVTZn