C++中vector、list和deque的选择:什么时候使用它们?
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、vector
- 二、list
- 三、deque
- 总结
前言
在C++中,vector、list和deque是STL(标准模板库)提供的三种常见的容器。每种容器都有其特点和适用场景。本文将详细介绍vector、list和deque的特点以及它们的适用场景,帮助你在编程过程中选择合适的容器。
一、vector
vector是C++中最常用的容器之一,它是一个动态数组,可以在末尾高效地插入和删除元素,也支持随机访问。
适用场景:
需要频繁在末尾插入和删除元素,并且不需要在中间或头部插入删除。
需要高效地进行随机访问,即通过索引访问元素。
元素数量会动态变化,但不会经常在中间或头部插入删除。
示例代码:
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3, 4, 5};// 在末尾插入元素vec.push_back(6);// 随机访问元素std::cout << "Element at index 3: " << vec[3] << std::endl;return 0;
}
二、list
list是一个双向链表,它支持高效地在任意位置插入和删除元素,但不支持随机访问。
适用场景:
需要频繁在中间或头部插入和删除元素。
不需要进行随机访问,而是通过迭代器遍历容器元素。
元素数量会动态变化,且需要高效地进行插入和删除操作。
示例代码:
#include <list>
#include <iostream>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 在头部插入元素myList.push_front(0);// 在中间插入元素auto it = ++myList.begin();myList.insert(it, 6);// 遍历元素for (int num : myList) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
三、deque
deque是一个双端队列,它支持高效地在头部和尾部插入和删除元素,也支持随机访问。
适用场景:
需要频繁在头部和尾部插入和删除元素,并且需要高效地进行这些操作。
需要随机访问元素,即通过索引访问元素。
元素数量会动态变化,但不会经常在中间插入删除。
示例代码:
#include <deque>
#include <iostream>int main() {std::deque<int> myDeque = {1, 2, 3, 4, 5};// 在头部插入元素myDeque.push_front(0);// 在尾部插入元素myDeque.push_back(6);// 随机访问元素std::cout << "Element at index 3: " << myDeque[3] << std::endl;return 0;
}
总结
通过本文,你已经了解了vector、list和deque这三种常用的C++容器的特点和适用场景。在实际编程过程中,根据需要选择合适的容器可以优化程序性能,提高代码效率。
希望本文对你在选择容器和优化代码方面有所帮助。如果你有任何问题或疑问,欢迎留言讨论。感谢阅读!
相关文章:
C++中vector、list和deque的选择:什么时候使用它们?
系列文章目录 文章目录 系列文章目录前言一、vector二、list三、deque总结 前言 在C中,vector、list和deque是STL(标准模板库)提供的三种常见的容器。每种容器都有其特点和适用场景。本文将详细介绍vector、list和deque的特点以及它们的适用…...
【力扣每日一题】2023.8.10 下降路径最小和Ⅱ
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个数组,让我们模拟从上面第一层走到下面的最后一层,下降路径需要加上经过的格子的值,每层…...
gh-ost概述(二实践)
注意:只适用于拥有主键或者唯一键的表,不存在触发器的表 一、gh-ost的安装部署 0、yum -y install golang 1、进入官网GitHub - github/gh-ost: GitHub’s Online Schema-migration Tool for MySQL 2、下载gh-ost-master.zip包 3、解压unzip gh-ost-mast…...
临时文档3
Set接口 说一下 HashSet 的实现原理? HashSet 是基于 HashMap 实现的,HashSet的值存放于HashMap的key上,HashMap的value统一为PRESENT,因此 HashSet 的实现比较简单,相关 HashSet 的操作,基本上都是直接调…...
【OpenGauss源码学习 —— 执行算子(SeqScan算子)】
执行算子(SeqScan算子) 执行算子概述扫描算子SeqScan算子ExecInitSeqScan函数InitScanRelation函数ExecSeqScan函数 总结 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵…...
Postman中,既想传递文件,还想传递多个参数(后端)
需求:既想传文件又想传多个参数可以用以下方式实现...
跨境干货|TikTok变现的9种方法
在这个流量为王的时代,哪里有流量,哪里就有商机。TikTok作为近几年最火爆的社媒平台之一,在全球范围都具有一定的影响力。随着TikTok Shop等商务功能加持上线,更是称为跨境电商的新主场之一。 在这样的UGC平台,想要变…...
Grafana 曲线图报错“parse_exception: Encountered...”
问题现象 配置的Grafana图报错如下: 原因分析 点开报错,可以看到报错详细信息,是查询语句的语法出现了异常。 变量pool的取值为None 解决方案 需要修改变量pool的查询SQL,修改效果如下: 修改后&#x…...
idea中提示Unsupported characters for the charset ‘ISO-8859-1‘
application.properties中文注释拉黄线 ,提示Unsupported characters for the charset ISO-8859-1 解决办法: 注意: 改完之后之前输入的中文就变成“ ???”了,建议备份一下 1、打开setti…...
通过signtool进行数字签名和验证签名
(一)如何签名 SignTool.exe (Sign Tool) - .NET Framework | Microsoft Learn Using SignTool to Sign a File - Win32 apps | Microsoft Learn 签名命令行: signtool.exe sign /f xxx.pfx /t http://timestamp.digicert.com yyy.dll xx…...
geeemap学习总结(2)——地图底图应用
1. 加载库中已有图层 import os os.environ[HTTP_PROXY] http://127.0.0.1:8001 os.environ[HTTPS_PROXY] http://127.0.0.1:8001 # 设置中心位置/地图层级/图层加载高度,加载图层 import geemap Mapgeemap.Map(center[40, 100], zoom4, height600) Map# 添加已经…...
flutter 手写日历组件
先看效果 直接上代码 calendar_popup_view.dart import package:flutter/material.dart; import package:intl/intl.dart;import custom_calendar.dart; import hotel_app_theme.dart;class CalendarPopupView extends StatefulWidget {const CalendarPopupView({required th…...
C++动态规划经典试题解析之打家劫舍系列
1.前言 力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。 学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观…...
24届近5年东南大学自动化考研院校分析
今天给大家带来的是东南大学控制考研分析 满满干货~还不快快点赞收藏 一、东南大学 学校简介 东南大学是我国最早建立的高等学府之一,素有“学府圣地”和“东南学府第一流”之美誉。东南大学前身是创建于1902年的三江师范学堂。1921年经近代著名教育家…...
electron、electron-forge 安装
npm修改了registry,安装依旧无效 使用cnpm 倒是可以解决,但是 npx electron-forge import 中 Installing dependencies 使用的是npm 给出一次性解决方案: step1:切换npm的下载源,可以使用nrm 进行管理,有…...
go的strings用法
strings 是 Go 语言标准库中提供的一个包,用于处理字符串相关的操作。这个包包含了许多函数,可以用于字符串的切割、拼接、替换、查找等操作。下面是一些常用的 strings 包函数和用法示例: package mainimport ("fmt""string…...
echo用法、linxu课堂练习题、作业题
一、课堂练习 练习一: 4、普通用户修改密码: root修改密码: 5、修改主机名:hostnamectl hostname 主机名 查看:hostnamectl或者cat etc/hostname 练习二: 1、 mkdir /root/html touch /root/html/index.…...
WordPress使用【前端投稿】功能时为用户怎么添加插入文章标签
在使用Wordpress做前端投稿功能的时候,可能需要用户填写文章标签,在插入文章的时候很多人不知道怎么把这些标签插入进去,下面这篇文章来为大家带来WordPress使用前端投稿功能时插入文章标签方法。 在Wordpress里 wp_insert_post 此函数的作…...
第二章:CSS基础进阶-part1:CSS高级选择器
文章目录 一、 组合选择器二、属性选择器三、伪类选择器1、动态伪类选择器2、状态伪类选择器3、结构性伪类选择器4、否定伪类选择器 一、 组合选择器 后代选择器:E F子元素选择器: E>F相邻兄弟选择器:EF群组选择器:多个选择器…...
js 正则表达式 限制input元素内容必须以abc开头,123结尾
要通过正则表达式验证一个输入元素的内容是否以"abc"开头且以"123"结尾,您可以使用 ^ 表示开头,$ 表示结尾,以及适当的字符类或具体字符。以下是一个示例正则表达式: var regex /^abc.*123$/;上面的正则表达…...
Qwen3-Embedding-0.6B快速部署指南:解决启动报错,轻松调用API
Qwen3-Embedding-0.6B快速部署指南:解决启动报错,轻松调用API 1. Qwen3-Embedding-0.6B模型简介 Qwen3-Embedding-0.6B是Qwen家族最新推出的文本嵌入模型,专为语义理解和向量化任务优化。这个0.6B参数的版本在保持高性能的同时,…...
亲测有效!Z-Image-Turbo解决AI绘画三大痛点:慢、黑、崩
亲测有效!Z-Image-Turbo解决AI绘画三大痛点:慢、黑、崩 1. 痛点终结者:当AI绘画遇上Turbo引擎 作为一名长期被AI绘画"折磨"的设计师,我经历过太多崩溃时刻:等待生成的进度条仿佛永远走不完,好不…...
实测对比:Qwen3-ForcedAligner与传统字幕制作工具谁更高效?
实测对比:Qwen3-ForcedAligner与传统字幕制作工具谁更高效? 1. 引言:字幕制作工具的演进 在视频内容爆炸式增长的今天,字幕制作已成为内容创作者无法回避的痛点。传统字幕制作流程通常包含三个步骤:人工听写文本、手…...
NaViL-9B医疗影像初筛:X光片描述生成+异常区域提示案例
NaViL-9B医疗影像初筛:X光片描述生成异常区域提示案例 1. 医疗影像AI助手简介 在医疗影像诊断领域,医生每天需要处理大量X光片、CT等影像资料。传统人工阅片方式存在效率瓶颈,特别是在基层医疗机构,专业放射科医生资源更为紧缺。…...
精简GVCP与GVSP:FPGA实现GigE Vision相机高效采集的工程实践
1. 为什么需要精简GigE Vision协议? 第一次接触GigE Vision相机时,我被它复杂的协议栈吓了一跳。完整的GigE Vision协议包含几十种功能模块,光是协议文档就有上千页。但在实际工业视觉项目中,我们往往只需要最基础的三个功能&…...
电商福音:THE LEATHER ARCHIVE快速生成二次元皮衣商品主图
电商福音:THE LEATHER ARCHIVE快速生成二次元皮衣商品主图 1. 项目背景与核心价值 在电商行业,商品主图的质量直接影响点击率和转化率。对于皮衣这类特殊材质的商品,传统拍摄方式面临三大痛点: 成本高昂:专业模特、…...
边缘 AI 成智能制造核心引擎,微品致远荣膺2026年边缘计算企业20强
请点击上方蓝字关注我们!近日,由边缘计算领域长期观察者与生态建设者——边缘计算社区精心策划并发起的“2026中国边缘计算企业20强”榜单正式发布。微品致远凭借在边缘AI领域的卓越表现与深厚技术积淀,从众多强劲竞争对手中脱颖而出…...
Rocket.Chat终极安全指南:区块链技术如何重塑企业通信安全
Rocket.Chat终极安全指南:区块链技术如何重塑企业通信安全 【免费下载链接】Rocket.Chat The Secure CommsOS™ for mission-critical operations 项目地址: https://gitcode.com/GitHub_Trending/ro/Rocket.Chat Rocket.Chat是一款开源、安全且完全可定制的…...
SharpCompress加密功能详解:保护压缩文件安全的最佳实践
SharpCompress加密功能详解:保护压缩文件安全的最佳实践 【免费下载链接】sharpcompress SharpCompress is a fully managed C# library to deal with many compression types and formats. 项目地址: https://gitcode.com/gh_mirrors/sh/sharpcompress Shar…...
CloudSaver 神器上手就会,一键搜全网资源 + 转存网盘!cpolar 内网穿透实验室第 731 个成功挑战
软件名称 CloudSaver(网盘资源整合 转存神器) 操作系统支持 支持群晖 NAS(全型号适配)、Windows/macOS(Docker 环境下)、Linux(Docker 部署),适配 PC 端 移动端&…...
