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

C++中的vector和list有什么区别?

1.vector:

底层:动态数组,可以快速访问随机元素;

内存分配:分配在连续的内存上;

时间复杂度:
(1)插入或删除元素:在队头或队尾插入或删除元素时可以实现O(1)的时间复杂度;在队中时的时间复杂度为O(n);(2)访问元素:O(1)的时间复杂度。

内存管理:由于在内存上是连续的,所以可以利用缓存机制来快速访问元素。

2.list:

底层:双向链表,可以快速插入元素;

内存分配:在内存上是离散存储的;

时间复杂度:(1)插入或删除元素时:在任意位置都是O(1)的时间复杂度;(2)访问元素:O(n)的时间复杂度。

内存管理:由于离散储存在内存上,因此在插入元素时不需要移动大量内存。

3.使用情景:

vecetor:(1)当需要在队首或队尾快速插入或删除元素时;(2)当需要快速访问随机元素时;(3)当更关心内存使用效率时;

list:(1)当需要快速在任意位置插入或删除元素时;(2)不需要快速访问随机元素;(3)在插入或删除时不希望移动大量内存。

http://www.xdnf.cn/news/219727.html

相关文章:

  • Launcher3-实现家长管控-儿童模式-老人模式
  • 机器学习第四篇 线性回归-最小二乘法
  • 案例分享|20倍提效!水力设备电磁仿真的云端实战
  • DDoS攻击真的无解吗?
  • DeepClaude开源程序可以实现代码生成、创作诗句以及内容创作等功能
  • 详解大语言模型生态系统概念:lama,llama.cpp,HuggingFace 模型 ,GGUF,MLX,lm-studio,ollama这都是什么?
  • 【LaTex】3.8流程图绘制
  • Transformer数学推导——Q34 推导位置插值(Position Interpolation)在长文本外推中的误差上界
  • (02)Redis 的订阅发布Pub/Sub
  • Ubuntu上搭建python环境并安装第三方库
  • C语言教程(二十四):C 语言中递归的详解
  • cuda学习3: 全局线程id计算
  • 大语言模型能否替代心理治疗师的深度拓展研究:fou
  • 两数之和II-输入有序数组(中等)
  • 洛谷题解 | CF1979C Earning on Bets
  • DNA复制过程3D动画教学工具
  • 稳定性 复杂度
  • 浅析localhost、127.0.0.1 和 0.0.0.0的区别
  • 【RocketMq延迟消息操作流程】
  • 鸟笼效应——AI与思维模型【84】
  • Canvas基础篇:概述
  • DeepSeek 本地化部署与 WebUI 配置的方法
  • Fiddler抓取APP端,HTTPS报错全解析及解决方案(一篇解决常见问题)
  • 在Ubuntu中安装python
  • 02_高并发系统问题及解决方案
  • 大模型高效化三大核心技术:量化、蒸馏与剪枝详解
  • 【AI论文】BitNet v2:针对1位LLM的原生4位激活和哈达玛变换
  • 物流新速度:数字孪生让仓库“聪明”起来
  • 民锋视角下的价格波动管理思路
  • 健康养生:拥抱活力生活