首页 > 其他分享 >39vector, deque, list之间的对比

39vector, deque, list之间的对比

时间:2024-03-04 21:45:35浏览次数:30  
标签:扩容 deque 复杂度 list vector 内存 39vector

vector, deque, list之间的对比

  • vector的特点:

    • 动态数组
    • 内存是完全连续的
    • 扩容:2倍形式扩容,扩容时要开辟新的内存空间,并将数据拷贝
  • list的特点:

    • 双向循环链表
    • 内存是不连续的
    • 没有扩容需求
  • deque的特点:

    • 参考
    • 动态开辟的二维数组空间
    • 内存分段连续
    • 第二维是固定长度的数组空间,扩容的时候第一维2倍扩容
  • vector和deque的区别

    • 底层数据结构不同
    • 前面插入元素的复杂度:vector为O(n),deque为O(1)
    • 中间插入元素的复杂度:均为O(n)
    • 最后插入元素的复杂度:均为O(1)
    • 内存的使用效率:vector要求内存空间必须是连续的,deque可以分块数据存储,不必内存连续,使用效率更高。
    • 对中间进行insert或者erase,vector的效率相对更好些,因为其底层内存连续。
  • vector和list的区别

    • 底层数据结构不同
    • vector适合随机访问
    • list适合增删

标签:扩容,deque,复杂度,list,vector,内存,39vector
From: https://www.cnblogs.com/sio2zyh/p/18052781

相关文章

  • 【Spring】Spring的事件监听ApplicationListener 、ApplicationEvent
     Spring中的事件监听机制,事件驱动开发可以用在以下这些场景:1.业务代码入口在下一级模块module,sender消息发送者在上一级模块module,不想循环依赖,就这样用2.解耦合的事件驱动模式,观察者模式等3.待补充实例代码:1.业务代码testAAA,执行同步业务privatevoidtestAAA(List<Chann......
  • Java List常用方法Stream()简要总结&生成的List去重
    Java中,ArrayList应该是比较常用的一个对象了;那么它的stream()方法大家了解过吗?如果可以熟练使用stream()方法,就可以方便地获取list中元素的某个特定字段、对list中的元素进行筛选、或者把list转成map。参考:https://blog.csdn.net/BHSZZY/article/details/122860048如何获取不重......
  • 有一个子组件DataList,然后在父组件中引入,并在父组件引入中的DataList标签上设置style
    有一个子组件DataList,然后在父组件中引入,并在父组件引入中的DataList标签上设置style样式,能生效吗?在React中,父组件可以通过props将样式传递给子组件,并在子组件内部应用这些样式。但直接在父组件引用子组件的地方设置style属性通常不会生效,因为React的JSX语法并不支持这种写法。......
  • 深度复制:C# 中 List 与 List 多层嵌套不改变原值的实现方法
     概述:以上内容详细介绍了在C#中实现不改变原List值的多层嵌套复制方法,包括使用AutoMapper、Json.NET、以及对象序列化的步骤和示例。这些方法提供了灵活而高效的方式,可以根据项目需求选择最适合的深度复制方式。1.使用AutoMapper进行多层嵌套复制AutoMapper是一个......
  • ConcurrentSkipListMap
    为了引出ConcurrentSkipListMap,先带着大家简单理解一下跳表。对于一个单链表,即使链表是有序的,如果我们想要在其中查找某个数据,也只能从头到尾遍历链表,这样效率自然就会很低,跳表就不一样了。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们都可以对元素进行快速的查......
  • list
    list的定义与结构双向链表容器节点(node)储存元素指针链接list<int>mylist特点双向性,含有两个指针能随意插入删除,直接改变指针指向就好不能任意访问元素,必须便利动态大小可以不连续list的常用函数push_back():将元素插入到链表的末尾push_front():将元素插入到链......
  • C#的 ArrayList集合 和 List 集合
    //集合&字典的初识//集合的使用//集合与数组比较类似,都用于存放一组值//数组的优劣势分析//1.优势:数组在内存中是连续存储的,所以他的索引速度非常的快,而且赋值与修改元素也很简单//2.劣势:在数组的连个数据之间插入数据很麻烦在声明数组的时候,必须同时指明数组的......
  • QListWidget
    实现给QListWidget的列表项中,文字右侧加图片QListWidgetItem*item=newQListWidgetItem();声明一个QWidget,为其添加水平布局,布局中有文字,有图片:QWidget*itemWidget=newQWidget;QHBoxLayout*layout=newQHBoxLayout(itemWidget);QLabel*label=newQLabel(strfil......
  • Lambda实现条件去重distinct List
    原文链接:https://blog.csdn.net/qq_39940205/article/details/114269686  _______________________________________________________________________________________________________________我们知道,Java8lambda自带的去重为distinct方法,但是只能过滤整体对象,不......
  • redis自学(9)List
    ListRedis的List类型可以从首、尾操作列表中的元素:  哪一个数据结构能满足上述特征? LinkedList:普通链表,可以从双端访问,内存占用较高,内存碎片较多 ZipList:压缩列表,可以从双端访问,内存占用低,存储上限低 QuickList:LinkedList+ZipList,可以从双端访问,内存占用较低,......