当前位置: 首页 > news >正文

C++中vector和list的优缺点对比以及deque

两者基本上优缺点互补


vector:

优点:

1、尾插尾删效率不错,支持高效下标随机访问

2、物理空间连续,所以告诉缓存利用效率高

缺点:

1、空间需要扩容,扩容有代价

2、头部和中间插入删除效率低


list

优点:

1、按需申请释放空间,不需要扩容

2、任意位置插入删除

缺点:

1、不支持下标的随机访问


vector和list的缝合怪——deque

        开辟若干个数组(buff),还有一个中控数(是一个指针数组ptr),会试图把第一个数组的地址放在中控数组中间;当中控数组满了会进行扩容

        假设每个buff数组大小是N,要获取第i个数据,x = i / N就是第x个数组,y = i % N就是第x个数组的第y个

        访问方式就是ptr[x][y],即 *(*(ptr + x) + y)

总结:

1、deque头插、尾插效率不错,更胜于list和vector

2、下标随机访问也还不错,但不如vector

3、在中间插入删除效率很低,不如list,要挪动数据,效率是O(N)

http://www.dtcms.com/a/283204.html

相关文章:

  • PowerJob集群机器数为0问题
  • Python第八章作业(初级)
  • 如何使用VScode使用ssh连接远程服务器不需要输入密码直接登录
  • 27.Hamming 距离
  • transformers基础Data Collator
  • 教程:如何快速查询 A 股实时 K线和5档盘口
  • 今日行情明日机会——20250716
  • Redis深度解析:从缓存到分布式系统的核心引擎
  • 用python实现自动化布尔盲注
  • pytest--1--pytest-mock常用的方法
  • 代码随想录day36dp4
  • 震坤行获取商品SKU操作详解
  • 16路串口光纤通信FPGA项目实现指南
  • Kotlin获取集合中的元素操作
  • Java与Vue精心打造资产设备管理系统,提供源码,适配移动端与后台管理,助力企业高效掌控资产动态,提升管理效能
  • 【Java】JUC并发(synchronized进阶、ReentrantLock可重入锁)
  • 二重循环:输入行数,打印直角三角形和倒直角三角形
  • Java后端开发核心笔记:分层架构、注解与面向对象精髓
  • 基于Android的旅游计划App
  • Web基础 -MYSQL
  • 冷库耗电高的原因,冷链运营者的降本增效的方法
  • LVS四种模式及部署NAT、DR模式集群
  • CD53.【C++ Dev】模拟实现优先级队列(含仿函数)
  • 【计算机网络】数据通讯第二章 - 应用层
  • 深度学习之反向传播
  • 【迭代】PDF绘本录音播放,点读笔方案调研和初步尝试
  • leetcode 725 分割链表
  • 微算法科技研究量子视觉计算,利用量子力学原理提升传统计算机视觉任务的性能
  • Kafka入门
  • 语音增强论文汇总