C++容器
C 容器是标准模板库STL的核心组成部分本质上是用于存储和组织数据的通用数据结构它们被封装成模板类支持不同类型的数据存储无需你手动管理内存大部分情况下。一、容器的分类C STL 容器主要分为三大类各自有不同的适用场景容器类型代表容器核心特点序列式容器vector、list、deque元素按插入顺序排列可通过位置访问底层结构不同导致性能差异关联式容器map/set、unordered_map/unordered_set元素按特定规则排序 / 哈希组织查找效率高容器适配器stack、queue、priority_queue基于基础容器封装提供特定的访问规则如栈的后进先出二、常用容器的基本用法下面通过代码示例展示最常用容器的核心操作1. 序列式容器 - vector最常用vector是动态数组内存连续随机访问快尾部增删效率高中间增删效率低。cpp运行#include iostream #include vector // 包含vector头文件 using namespace std; int main() { // 1. 创建vector vectorint vec; // 空的int类型vector vectorint vec2(5, 10); // 初始化5个元素每个值为10 // 2. 添加元素 vec.push_back(1); // 尾部添加元素1 vec.push_back(2); vec.push_back(3); // 3. 访问元素 cout 通过下标访问 vec[0] endl; // 下标访问无越界检查 cout 通过at访问 vec.at(1) endl; // at访问有越界检查更安全 cout 第一个元素 vec.front() endl; cout 最后一个元素 vec.back() endl; // 4. 遍历元素 cout 遍历vector; for (int i 0; i vec.size(); i) { cout vec[i] ; } cout endl; // 5. 删除元素 vec.pop_back(); // 删除尾部元素 cout 删除尾部后大小 vec.size() endl; // 6. 清空容器 vec.clear(); cout 清空后是否为空 (vec.empty() ? 是 : 否) endl; return 0; }输出结果plaintext通过下标访问1 通过at访问2 第一个元素1 最后一个元素3 遍历vector1 2 3 删除尾部后大小2 清空后是否为空是2. 关联式容器 - map键值对map是有序的键值对容器键唯一底层是红黑树查找 / 插入 / 删除效率为 O (log n)。cpp运行#include iostream #include map // 包含map头文件 #include string using namespace std; int main() { // 1. 创建map键string值int mapstring, int scoreMap; // 2. 插入元素 scoreMap[张三] 90; scoreMap.insert(pairstring, int(李四, 85)); scoreMap.insert({王五, 95}); // 3. 访问元素 cout 张三的分数 scoreMap[张三] endl; // 查找不存在的键会自动插入默认值0建议用find auto it scoreMap.find(赵六); if (it ! scoreMap.end()) { cout 赵六的分数 it-second endl; } else { cout 未找到赵六的分数 endl; } // 4. 遍历map cout \n所有分数 endl; for (const auto pair : scoreMap) { // 范围for循环 cout pair.first pair.second endl; } // 5. 删除元素 scoreMap.erase(李四); cout \n删除李四后元素数量 scoreMap.size() endl; return 0; }输出结果plaintext张三的分数90 未找到赵六的分数 所有分数 李四85 王五95 张三90 删除李四后元素数量23. 容器适配器 - stack栈stack是后进先出LIFO的适配器默认基于 deque 实现只能访问栈顶元素。cpp运行#include iostream #include stack // 包含stack头文件 using namespace std; int main() { stackint s; // 入栈 s.push(10); s.push(20); s.push(30); // 访问栈顶 cout 栈顶元素 s.top() endl; // 出栈 s.pop(); cout 出栈后栈顶 s.top() endl; // 栈的大小 cout 栈的大小 s.size() endl; // 判断是否为空 cout 栈是否为空 (s.empty() ? 是 : 否) endl; return 0; }输出结果plaintext栈顶元素30 出栈后栈顶20 栈的大小2 栈是否为空否三、容器选择的核心原则如果需要随机访问按下标快速取值、尾部增删多 → 选vector如果需要频繁在中间增删→ 选list双向链表如果需要键值对存储、按键查找→ 有序选map无序且追求更快查找 → 选unordered_map如果需要去重→ 选set/unordered_set如果需要先进先出队列→ 选queue后进先出栈→ 选stack总结C 容器是 STL 的核心分为序列式、关联式、容器适配器三类适配不同的数据存储和访问场景。vector是最常用的序列式容器适合随机访问map适合键值对存储stack/queue适合特定访问规则。选择容器的核心依据是访问方式和增删操作的位置 / 频率优先选择匹配业务场景、效率更高的容器。

相关新闻

网络工程毕设容易的开题答疑

网络工程毕设容易的开题答疑

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xff…

2026/7/7 5:23:46 阅读更多 →
网络安全毕设2026题目汇总

网络安全毕设2026题目汇总

0 选题推荐 - 大数据篇 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应…

2026/7/7 23:46:19 阅读更多 →
【普中STM32F1xx开发攻略--标准库版】-- 第 31 章 DAC 数模转换实验

【普中STM32F1xx开发攻略--标准库版】-- 第 31 章 DAC 数模转换实验

(1)实验平台:普中STM32F103朱雀、玄武开发板 前面章节中我们介绍了 STM32F1 的模数转换器 ADC, 这一章我们来学习下STM32F1 的数模转换器 DAC。 本章要实现的功能是: 通过 KEY_UP 与 KEY1 按键控制 STM32F1 DAC1 输出电压, 通过串…

2026/7/7 7:47:52 阅读更多 →

最新新闻

求职简历PPT推荐哪家模板?2026年主流平台横评与选型指南

求职简历PPT推荐哪家模板?2026年主流平台横评与选型指南

技术人的简历,不该被排版拖后腿 前言 又是一年求职季。相信不少技术圈的朋友都经历过这样的场景:项目经历写得清清楚楚、技术栈列得明明白白、开源贡献也梳理得整整齐齐,结果到了简历呈现这一步——Word排版总对不齐,套用模板又怕…

2026/7/8 1:19:11 阅读更多 →
模糊的代价:你每拖一次“画质”滑条,背后都是这条数学铁律在划边界

模糊的代价:你每拖一次“画质”滑条,背后都是这条数学铁律在划边界

一句话概括:它就是信息世界里,“质量”与“体积”必须遵守的宪法 你可以把它想象成一条铁律:在你能容忍画面多“糊”的前提下,这个文件压缩到多小,是有一个绝对极限的。这个极限不是技术限制,而是数学物理…

2026/7/8 1:19:11 阅读更多 →
商业数据分析:自媒体运营分析 - 作品特征构建

商业数据分析:自媒体运营分析 - 作品特征构建

一、实验背景1.1 实验目的本实验承接上次完成的实验 产出的content_analysis明细数据表,依托助睿 ETL 完成衍生指标计算与文本特征提取,属于机器学习建模前核心特征工程环节,完成两大任务:(1)基于基础互动指标计算单作品总互动量衍…

2026/7/8 1:19:11 阅读更多 →
部分shell命令

部分shell命令

1.ps 命令 用途:获取系统进程的静态快照,查看某一时刻运行的进程信息。 主要参数 a:显示所有终端下的用户进程u:以面向用户的格式输出,展示CPU、内存占用、所属用户x:展示没有控制终端的后台进程e&#xff…

2026/7/8 1:17:11 阅读更多 →
嵌入式GPU/NPU加速——CUDA与OpenCL在Jetson上的实践:内存管理与核函数优化

嵌入式GPU/NPU加速——CUDA与OpenCL在Jetson上的实践:内存管理与核函数优化

文章目录每日一句正能量摘要一、Jetson平台架构与异构计算概览二、CUDA内存模型与层次结构2.1 CUDA内存层次详解2.2 Jetson统一内存的特殊性三、CUDA核函数设计与线程模型3.1 线程层次结构3.2 卷积核函数实例:基础版3.3 优化版:共享内存Tiling策略3.4 Te…

2026/7/8 1:17:11 阅读更多 →
2026全国嵌入式培训为什么我建议你先了解一下金橙智能

2026全国嵌入式培训为什么我建议你先了解一下金橙智能

一、2026年嵌入式行业的“冰火两重天” 2026年,嵌入式行业正经历前所未有的供需失衡。一边是新能源、汽车电子、储能、机器人等领域对嵌入式人才的需求井喷式增长,企业开出具有竞争力的薪酬,却常常感叹“一将难求”;另一边是大量求…

2026/7/8 1:17:11 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻