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

STL list与vector核心差异详解

一、上期回顾掌握vector动态数组连续内存、随机访问、自动扩容、size/capacity 区别、常用增删接口。今天学习STL list 双向循环链表和 vector 做对标选型。二、list 底层本质list底层是双向循环链表每一个节点存数据 前驱指针 后继指针内存不连续不支持下标随机访问任意位置插入、删除O(1)效率极高三、list 与 vector 核心差异表格特性vectorlist底层结构连续动态数组双向链表随机访问支持[]下标不支持下标头部 / 中间插入删除O (n) 效率低O (1) 效率高尾部增删O (1) 很快O(1)内存占用紧凑无冗余每个节点带两个指针开销大迭代器可能失效插入不失效仅删除当前迭代器失效选型口诀频繁查询、随机访问 → 用 vector频繁中间 / 头部插入删除、不常查找 → 用 list四、list 常用构造方式#include iostream #include list using namespace std; int main() { // 1. 空链表 listint l1; // 2. 5个默认0 listint l2(5); // 3. 5个值为8 listint l3(5, 8); // 4. 拷贝构造 listint l4(l3); // 5. 区间构造 listint l5(l4.begin(), l4.end()); return 0; }五、list 常用赋值与遍历赋值listint l1 {1,2,3,4}; listint l2; l2 l1; l2.assign(3, 66); l2.assign(l1.begin(), l1.end());遍历方式注意list 不支持下标[]访问只能用迭代器、范围 forlistint l {10,20,30}; // 1. 迭代器遍历 for(listint::iterator it l.begin(); it ! l.end(); it) { cout *it ; } // 2. 范围for遍历 for(auto val : l) { cout val ; }六、list 核心常用接口listint l; // 尾插、头插 l.push_back(10); l.push_front(5); // 尾删、头删 l.pop_back(); l.pop_front(); // 大小、判空、清空 l.size(); l.empty(); l.clear(); // 指定位置插入 l.insert(l.begin(), 99); // 删除 l.erase(l.begin()); // 移除指定元素 l.remove(10); // 反转链表 l.reverse(); // 排序 l.sort();重点remove(值)直接删除所有等于该值的元素vector 没有这个便捷接口sort()list 自带排序不用算法库 sort因为不支持随机访问迭代器七、list 迭代器失效特性插入元素所有迭代器都不失效删除元素仅被删除节点的迭代器失效其他仍有效对比 vector插入删除极易导致大量迭代器失效list 更安全。八、完整综合示例代码#include iostream #include list using namespace std; int main() { listint l; // 头尾插入 l.push_back(1); l.push_back(3); l.push_front(0); l.push_back(5); cout 遍历元素; for(auto val : l) { cout val ; } cout endl; // 反转 l.reverse(); cout 反转后; for(auto val : l) cout val ; cout endl; // 排序 l.sort(); cout 排序后; for(auto val : l) cout val ; return 0; }运行结果遍历元素0 1 3 5 反转后5 3 1 0 排序后0 1 3 5九、今日核心总结list 底层双向循环链表内存不连续不支持下标随机访问只能迭代器 / 范围 for 遍历中间、头部增删效率远高于 vector独有接口remove、reverse、自带sort迭代器不易失效适合频繁插入删除场景业务选型查多用 vector插删多用 list十、课后练习创建 list 存入 5 个数字头插、尾插各加一个数调用 reverse 反转、sort 排序并打印

相关文章:

STL list与vector核心差异详解

一、上期回顾掌握 vector 动态数组:连续内存、随机访问、自动扩容、size/capacity 区别、常用增删接口。今天学习 STL list 双向循环链表,和 vector 做对标选型。二、list 底层本质list 底层是双向循环链表每一个节点:存数据 前驱指针 后继…...

10分钟快速上手Cellpose:终极AI细胞分割工具安装配置全攻略

10分钟快速上手Cellpose:终极AI细胞分割工具安装配置全攻略 【免费下载链接】cellpose a generalist algorithm for cellular segmentation with human-in-the-loop capabilities 项目地址: https://gitcode.com/gh_mirrors/ce/cellpose 想要在生物医学研究中…...

如何在Windows 11系统中彻底解决FanControl风扇识别难题:7个实用技巧与深度技术分析

如何在Windows 11系统中彻底解决FanControl风扇识别难题:7个实用技巧与深度技术分析 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gi…...

智汇笔记后端实战(三):三级目录树的实现与踩坑

〇、问题背景任务书写得轻描淡写:Notebook 表必须支持至少 3 级的父子级嵌套目录关系设计。听起来很简单,但当我真正动手实现"创建 / 查整棵树 / 改名 / 移动 / 删除"5 个操作时,发现这是整个后端目前最容易翻车的模块。我把这次踩…...

DLSS Swapper终极指南:免费游戏性能优化工具完整使用教程

DLSS Swapper终极指南:免费游戏性能优化工具完整使用教程 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款功能强大的免费DLSS管理工具,专门用于管理游戏中的DLSS、FSR和XeSS动…...

C++ 红黑树:从规则到实现,手把手带你写一棵红黑树

红黑树是二叉搜索树家族中重要的一员,在 C STL 的 map 和 set 底层、Linux 内核的调度器、Java 的 TreeMap 等地方都能看到它的身影。它通过一套精妙的颜色规则,在频繁的插入删除中维持着近似平衡,既保证了 O(log N) 的时间复杂度&#xff0c…...

网络-堆叠

堆叠链路聚合:多条物理链路变成一条逻辑链路堆叠:多个支持堆叠特性的交换机,通过堆叠技术,变成一台逻辑上的交换机CSS(集群):用于框式交换机,只支持 2 台设备,从逻辑上虚…...

过去我父亲骑骆驼,现在我开汽车,将来我儿子驾驶喷气式飞机,最后他的儿子只能骑骆驼。——沙特阿拉伯谚语

这句沙特阿拉伯谚语有着丰富的内涵,具体可以从这几个角度理解:对发展循环的调侃‌ 它以交通工具的变迁为线索,描绘了一个看似“进步”的循环:从骑骆驼到开汽车,再到驾驶喷气式飞机,最后又回到骑骆驼。用夸张…...

5分钟快速上手:终极通达信缠论可视化插件指南

5分钟快速上手:终极通达信缠论可视化插件指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 缠论作为股票技术分析领域的核心理论,以其严谨的逻辑结构和独特的市场视角成为众多交…...

Pearcleaner:彻底告别Mac臃肿,三步释放宝贵存储空间

Pearcleaner:彻底告别Mac臃肿,三步释放宝贵存储空间 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是否曾发现,即使删…...

如何彻底清理你的Mac:Pearcleaner智能卸载工具完全指南

如何彻底清理你的Mac:Pearcleaner智能卸载工具完全指南 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 还在为Mac上堆积的应用残留文件而烦恼吗&…...

John the Ripper 的 --format=crypt:让系统替你算哈希

在使用 John the Ripper(以下简称 John)破解密码哈希时,你可能会遇到这样的情况:John 自动检测不到哈希类型,或者报错说找不到对应的格式插件。这时候,一个"万能兜底"的参数就能派上用场——--fo…...

完全免费!3个步骤让你的Windows电脑风扇变智能,告别噪音烦恼

完全免费!3个步骤让你的Windows电脑风扇变智能,告别噪音烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/G…...

NVIDIA Profile Inspector深度解析:如何解锁显卡隐藏性能的完整指南

NVIDIA Profile Inspector深度解析:如何解锁显卡隐藏性能的完整指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经感觉自己的NVIDIA显卡性能被封印?明明配置不差&am…...

各省市区县地形位置指数平均值、最大值、最小值和标准差数据(地形起伏度)

各省市区县地形位置指数平均值、最大值、最小值和标准差数据(地形起伏度) 数据原始来源于 NASA ASTER Global Digital Elevation Model V003 版数据。 地形位置指数通常也称为地形起伏度,即在一个特定区域内最高点与最低点海拔高度的差值。…...

从一根琴弦到万物波动:用Python和NumPy手把手复现Fourier级数的诞生过程

从一根琴弦到万物波动:用Python和NumPy手把手复现Fourier级数的诞生过程 当18世纪的数学家们争论"不连续函数能否用三角级数表示"时,他们或许想象不到两个世纪后的开发者只需几行代码就能可视化这个革命性思想。本文将带您穿越时空&#xff0c…...

组合优化中的在线学习算法:Exp3与FTRL详解

1. 组合优化中的在线学习算法概述组合优化问题在计算机科学和运筹学中无处不在,从经典的旅行商问题(TSP)到背包问题,再到资源分配和调度问题。这类问题的共同特点是需要在离散的、通常是巨大的解空间中寻找最优或近似最优的解。传统方法如动态规划、分支…...

通达信VOL实战监测:一个能替代成交量指标的源码,手把手教你安装与解读

通达信VOL指标深度解析:从源码安装到实战应用全指南 在股票技术分析领域,成交量指标(VOL)一直被视为价格变动的重要验证工具。传统成交量指标虽然直观,但缺乏对市场情绪的分级判断。今天我们要探讨的这套通达信VOL增强指标,通过换…...

Windows蓝屏0xE6?别慌!手把手教你用WinDbg定位DRIVER_VERIFIER_DMA_VIOLATION元凶(以NVIDIA显卡驱动为例)

Windows蓝屏0xE6故障排查:用WinDbg精准定位DRIVER_VERIFIER_DMA_VIOLATION问题 当你正专注于重要工作时,屏幕突然蓝屏并显示"DRIVER_VERIFIER_DMA_VIOLATION (0xE6)"错误代码,这种经历足以让任何Windows用户感到沮丧。这种错误通常…...

观察 Taotoken 在多模型聚合调用下的路由稳定性与响应表现

观察 Taotoken 在多模型聚合调用下的路由稳定性与响应表现 1. 测试环境与配置 本次测试基于 Taotoken 平台的标准 API 接入环境,使用 Python SDK 进行多模型调用。在控制台配置了三个不同供应商的模型作为备用路由选项,模型选择策略设置为自动模式。测…...

观察 Taotoken 按 Token 计费模式下的成本控制效果

观察 Taotoken 按 Token 计费模式下的成本控制效果 1. 项目背景与计费需求 在涉及大模型调用的项目中,成本控制一直是团队管理者关注的核心问题。传统按次或包月计费模式往往难以精确匹配实际使用量,容易造成资源浪费或预算超支。我们团队近期接入了 T…...

DROID-SLAM的“可微分BA层”到底强在哪?深入拆解RAFT与LieTorch的协同设计

DROID-SLAM的可微分BA层技术解析:RAFT与LieTorch的协同创新 视觉SLAM领域近年来最引人注目的突破之一,莫过于深度学习与传统几何方法的深度融合。DROID-SLAM作为这一交叉领域的代表性工作,其核心创新点——可微分稠密束调整(DBA&a…...

用AT32F437的QSPI给项目扩容:手把手实现华邦W25N01G NAND Flash的文件系统移植

AT32F437 QSPI扩展实战:W25N01G NAND Flash文件系统深度整合指南 在嵌入式系统开发中,存储扩展一直是提升设备能力的关键路径。当AT32F437这类高性能MCU遇到1Gb大容量NAND Flash时,如何突破基础驱动层面,实现稳定可靠的文件系统支…...

对比直接使用厂商API体验Taotoken在路由容灾上的便利

服务波动下的无缝切换:Taotoken 路由容灾实践观察 1. 背景与问题场景 在实际开发过程中,依赖单一模型供应商的 API 服务存在潜在风险。当供应商出现临时性服务波动或区域性故障时,传统解决方案通常需要开发者手动切换 API 端点或模型&#…...

《图灵完备》迷宫机器人避坑指南:为什么‘右手扶墙’算法会失效?以及如何用汇编实现它

《图灵完备》迷宫机器人避坑指南:从算法失效到汇编实战 当你第一次在《图灵完备》的迷宫关卡中尝试"右手扶墙"算法时,可能会惊讶地发现这个经典方法在某些情况下会彻底失效。这不是算法的错,而是游戏机制与真实世界物理规则的微妙差…...

Cadence IC617下tsmc18rf与tsmcN65工艺库安装避坑全记录(附转换失败备用包)

Cadence IC617工艺库安装实战:从CDB-OA转换失败到应急方案全解析 在半导体设计领域,工艺库的安装是每位工程师必须掌握的基础技能。当面对Cadence IC617环境下tsmc18rf与tsmcN65工艺库的安装时,许多用户会发现即使严格遵循教程步骤&#xff0…...

告别电源纹波!手把手教你用UCC28019设计一个高效率PFC模块(附完整原理图与BOM清单)

告别电源纹波!手把手教你用UCC28019设计一个高效率PFC模块(附完整原理图与BOM清单) 在中小功率开关电源设计中,功率因数校正(PFC)模块的性能直接影响整个系统的效率和稳定性。传统设计往往面临纹波大、动态…...

实战指南:构建智能缠论量化分析的高效开源方案

实战指南:构建智能缠论量化分析的高效开源方案 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 你是否厌倦了手动绘制缠论线段和中枢的繁琐过程?CZSC.dll开源缠论量化插件通过先进…...

ROS导航调参实战:如何让你的TurtleBot3在复杂办公室环境里不撞墙?

ROS导航调参实战:TurtleBot3复杂环境避障优化指南 在机器人导航领域,ROS的move_base功能包提供了强大的路径规划能力,但默认参数往往难以应对真实场景中的复杂环境。当你的TurtleBot3在办公室走廊频繁撞墙、在U型转弯处卡住、或对动态障碍反应…...

2025届毕业生推荐的五大AI论文工具推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要降低文章里人工智能生成的那种痕迹,得从词汇的挑选、句式的构造以及逻辑的连贯…...