STL--list和vector有什么区别

news2024/11/15 23:28:47

在这里插入图片描述

list 和 vector 是 C++ STL 中的两种常见容器,它们在底层实现、性能特性和适用场景方面有着显著的区别:

底层数据结构:

  • vector 底层是一个动态数组,提供快速的随机访问,但在中间插入或删除元素效率较低。

  • list 是一个双向链表,提供快速的任意位置插入和删除操作,但不支持直接的随机访问

内存分配:

  • vector 的元素存储在连续的内存块中,这有助于空间局部性和缓存效率,但可能导致较大的内存重新分配成本。

  • list 的元素分散存储,每个元素单独分配内存,增加了额外的内存开销(例如,指针空间),但减少了内存重新分配的频率。

性能特点:

  • vector 在末尾添加或删除元素非常高效,但在起始或中间位置进行这些操作效率较低。

  • list 在任何位置添加或删除元素都非常高效,但访问元素(尤其是随机访问)的效率低于 vector。

应用场景:

  • vector 适用于元素数量变化不大、需要快速随机访问或频繁在尾部添加/删除元素的场景。

  • list 适合于元素数量经常变化、需要频繁在列表中间进行插入或删除操作的场景。

迭代器类型:

  • vector 支持随机访问迭代器,可以进行+/-操作进行快速定位。

  • list 支持双向迭代器,只能逐个元素前进或后退。

内存占用:

  • vector 通常比 list 占用更少的内存,除非频繁扩容导致大量未使用的容量。

  • list 的每个元素都需要额外的内存来存储前后元素的指针。

应用场景举例

  • vector:适用于需要快速随机访问的数据集,如数值计算、数组替代、数据缓冲区等。

  • list:适用于元素频繁插入和删除的场景,如实现队列、栈、复杂的数据结构调整等。
    选择正确的容器类型对于优化程序性能和内存使用至关重要。在实际应用中,应根据具体需求和使用场景来选择 vector 或 list。


本篇完!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1575238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙ArkUI实例:【自定义组件】

组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 Text 、 Button 等,也可以是自定义组件,本节笔者简单介绍一…

ERC314协议代币开发及合约开发详解

ERC314 是一种新的代币标准,旨在为 BASE 链上的代币提供更便捷、高效的交易体验。它由 DAPJ 项目团队开发,并于 2023 年 8 月首次发布。 ERC314 的特点 无需依赖 DEX 或 SWAP 进行交易: ERC314 代币可以像原生代币一样直接转账,无需借助 DEX …

Lightroom Classic 2024成就专业摄影梦想mac/win版

Lightroom Classic 2024是一款功能强大的数字图像处理和管理工具,专为摄影师和摄影爱好者设计。它提供了丰富的照片调整、处理、管理和分享功能,帮助用户轻松管理、编辑和展示他们的照片。 Lightroom Classic 2024软件获取 首先,Lightroom C…

Vector Laboratories的凝集素--莲藕凝集素(Lotus Tetragonolobus Lectin)

莲藕凝集素(lotustetragonolobus lectin)是一个密切相关的糖蛋白家族,对含α-linked L-fucose具有相似的特异性。虽然莲藕凝集素的许多结合特性与荆豆凝集素I相似,但这些岩藻糖特异性凝集素之间的结合亲和力和某些寡糖特异性明显不…

【小白学机器学习11】假设检验之2:Z检验(U检验,正态检验)

目录 1 什么是Z检验 1.1 Z检验的别名 Z-test /U-test / 正态检验 1.2 维基百科定义 1.2 百度百科定义 1.3 定义提炼关键点 1.4 Z检验量 : Z(X-θ)/s (X-u)/s 2 Z检验量的构造 2.1 Z检验量 : Z(X_-u)/s 2.2 Z检验变量的构造 2.4 Z检验量的核心参数 2.4.1 原始公式 …

性能优化-如何爽玩多线程来开发

前言 多线程大家肯定都不陌生,理论滚瓜烂熟,八股天花乱坠,但是大家有多少在代码中实践过呢?很多人在实际开发中可能就用用Async,new Thread()。线程池也很少有人会自己去建,默认的随便用用。在工作中大家对…

数据库表设计18条黄金规则

前言 对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。 系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。 后端开发的日常工作&#xff…

基于ARM内核的智能手环(day8)

心率模块 输入模拟量 MPU6050 IIC 接线引脚: 因为这两个模块官方都提供了详细的资料和源码,这里不再过多赘述 项目结果展示 待机页面 有开场动画 所有页面无操作20s自动返回待机页面 主页 展示时间和温度到达预定时间蜂鸣器响起,按键后关…

损失函数L1Loss、L2loss区别

损失函数 L1Loss 平均绝对误差(Mean Absolute Error,MAE) 预测值和真实值之差的绝对值 L2Loss 均方误差(Mean Square Error,MSE) 是预测值和真实值之差的平方 Smooth L1 Loss/Huber Loss 平滑版本的…

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php数组与基本循环

php数组与基本循环 <?php$myName"xixi";$namesarray(xixi1,xixi2,xixi3); ?> <p> Hi ,my name is <?php echo $myName; ?> </p> <p> Hi,my name is <?php echo $names[0] ?> </p> <p> Hi,my name is <?…

全国月度平均风速空间分布数据/月度降雨量分布/月均气温分布

引言 风速是指空气相对于地球某一固定地点的运动速率。一般来讲&#xff0c;风速越大&#xff0c;风力等级越高&#xff0c;风的破坏性越大。平均风速&#xff0c;一定时段内&#xff0c;数次观测的风速的平均值。一般表达方式为[m/s]。 正文 我国位于欧亚大陆东部、太平洋西岸…

哪些医疗器械申请FDA,需要准备网络安全文件?需要提交的文件都是什么样的?

一、什么类型的医疗器械需要递交网络安全文件&#xff1f; FD&C法案第524B条(c) 条将“网络设备”定义为&#xff1a; 1&#xff09;经申请人验证、安装或授权的软件或设备&#xff1b; 2&#xff09;具备连接互联网的能力&#xff1b; 3&#xff09;包含经申请人验证、…

YOLO算法改进Backbone系列之:PVT

摘要&#xff1a;尽管基于CNNs的backbone在多种视觉任务中取得重大进展&#xff0c;但本文提出了一个用于密集预测任务的、无CNN的的简单backbone——Pyramid Vision Transformer&#xff08;PVT&#xff09;。相比于ViT专门用于图像分类的设计&#xff0c;PVT将金字塔结构引入…

每日OJ题_两个数组dp①_力扣1143. 最长公共子序列

目录 力扣1143. 最长公共子序列 解析代码 力扣1143. 最长公共子序列 1143. 最长公共子序列 难度 中等 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样…

BPMN建模示例

背景 对BPMN已经有了初步的了解&#xff0c;并且已经理解了BPMNJS这种流程引擎的工具&#xff0c;那么接下来我们已具体的案例来感性认知BPMN的能力&#xff0c;为接下来BPMN的学习做个铺垫。 是的&#xff0c;我们需要一个通俗易懂的例子&#xff0c;于是乎&#xff0c;我在…

阿里云服务器的主要用途是什么?

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

文心一言指令词宝典之咨询分析篇

作者&#xff1a;哈哥撩编程&#xff08;视频号、抖音、公众号同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5;…

PDPS教程:镜像对象功能介绍与使用方法

目录 概述 命令说明 创建目标资源 镜像对象操作 模型保存 概述 PDPS中也有与机械设计软件相类似的模型镜像功能&#xff0c;在Process Simulate中这个功能叫做“镜像对象”&#xff0c;使用镜像对象命令可以创建与已有模型关于指定平面镜像对称的复制体&#xff08;模型实…

Day16_IDEAJavaWeb项目下在WEB-INF添加jar包导致Tomcat无法启动的问题解决记录

0 起因 自己用的是Tomcat 9.0.69&#xff0c;老师用的是Tomcat 9.0.87。本以为都是9.0.x&#xff0c;差别不会很大&#xff0c;但是老师演示的时候他没导入mysql包查询数据库的servlet就不能运行&#xff0c;而我的却可以&#xff0c;于是问了GPT&#xff0c;得到以下答复。 …

docker部署小霸王游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/jsnes:1.0.0docker-compose部署 vim docker-compose.yml version: 3 services:jsnes:container_name: jsnesimage: registry.cn-beijing.aliyuncs.com/wuxingge123/jsnes:1.0.0ports:- 8082:80restart: …