news 2026/4/16 21:30:26

C++ STL容器入门:三大核心用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ STL容器入门:三大核心用法

以下是一篇面向初学者的C++ STL容器入门教程,重点介绍三种最常用的容器及其基本操作:


C++ STL容器入门指南

STL(Standard Template Library)是C++标准库的核心组成部分,提供了高效的容器(如数组、链表、映射等)和算法。本文将通过代码示例手把手教你使用以下容器:

  1. vector(动态数组)
  2. map(键值对集合)
  3. set(唯一元素集合)

1. vector:动态数组

vector类似于普通数组,但支持自动扩容。

基本操作:

#include <vector> #include <iostream> using namespace std; int main() { // 初始化 vector<int> nums = {10, 20, 30}; // 尾部添加元素 nums.push_back(40); // {10, 20, 30, 40} // 访问元素(支持索引) cout << nums[0] << endl; // 输出:10 // 遍历 for (int i = 0; i < nums.size(); i++) { cout << nums[i] << " "; // 输出:10 20 30 40 } return 0; }

2. map:键值对集合

map以键(key)和值(value)的形式存储数据,键具有唯一性。

基本操作:

#include <map> #include <iostream> using namespace std; int main() { // 初始化 map<string, int> scores = {{"Alice", 90}, {"Bob", 85}}; // 插入新键值对 scores["Charlie"] = 88; // {"Alice":90, "Bob":85, "Charlie":88} // 查找元素 if (scores.find("Bob") != scores.end()) { cout << "Bob的分数:" << scores["Bob"] << endl; // 输出:85 } // 遍历 for (auto& pair : scores) { cout << pair.first << ": " << pair.second << endl; } return 0; }

3. set:唯一元素集合

set自动去重,并默认按升序排列元素。

基本操作:

#include <set> #include <iostream> using namespace std; int main() { // 初始化 set<int> uniqueNums = {3, 1, 2}; // 插入元素(自动去重) uniqueNums.insert(2); // 集合仍为 {1, 2, 3} // 检查元素是否存在 if (uniqueNums.count(3) > 0) { cout << "3存在!" << endl; } // 遍历(有序输出) for (int num : uniqueNums) { cout << num << " "; // 输出:1 2 3 } return 0; }

核心注意事项

  1. 越界访问vector[]操作符不检查边界,建议用.at(i)(会抛异常)。
  2. 查找效率mapset基于红黑树实现,查找时间复杂度为 $O(\log n)$。
  3. 迭代器失效:在vector中插入元素可能导致原有迭代器失效。

练习建议
尝试用vector存储学生姓名,用map关联姓名与分数,并用set记录不及格学生名单。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 16:27:14

C++高效利器:优先级队列与反向迭代器

好的&#xff0c;我们来深入探讨C标准库中的两个重要特性&#xff1a;优先级队列&#xff08;priority_queue&#xff09;和反向迭代器&#xff08;reverse_iterator&#xff09;。它们在处理特定问题时非常高效。&#x1f9e0; 1. 优先级队列 (priority_queue)优先级队列是一种…

作者头像 李华
网站建设 2026/4/16 14:10:32

C++与Linux:高效文件操作全解析

好的&#xff0c;这是一份关于 C 和 Linux 系统级文件操作的详细讲解&#xff1a; C 与 Linux&#xff1a;文件操作的系统接口详解 在 Linux 环境下进行文件操作&#xff0c;除了使用 C 标准库提供的 std::fstream 等类&#xff0c;我们还可以直接调用操作系统提供的底层接口…

作者头像 李华
网站建设 2026/4/16 15:55:07

AWPortrait-Z人像生成实战:微信公众号推文配图风格统一方案

AWPortrait-Z人像生成实战&#xff1a;微信公众号推文配图风格统一方案 在运营微信公众号时&#xff0c;你是否遇到过这些困扰&#xff1a;每期推文都要花一小时找图、修图、调色&#xff1b;不同设计师产出的配图风格不一致&#xff0c;影响品牌调性&#xff1b;临时赶稿时找…

作者头像 李华
网站建设 2026/4/16 15:54:11

半加器动态功耗原理:快速理解其能耗特性

半加器:一块被低估的“功耗显微镜” 你有没有试过,在凌晨三点盯着波形仿真器里一条微微抖动的电流曲线发呆?那不是噪声,是电荷在纳米级沟道里奔涌、在飞发法拉的寄生电容上堆积又泄放——而这一切,早在半个世纪前,就藏在一个只有两个输入、两个输出的电路里: 半加器 …

作者头像 李华
网站建设 2026/4/16 15:54:14

仓储管理升级,为何离不开数字孪生?

随着物流与供应链节奏不断加快&#xff0c;仓储环节正在从传统的“存放与周转”角色&#xff0c;转变为影响整体效率和成本的关键节点。仓库规模扩大、货品种类增多、作业流程复杂化&#xff0c;使得仅依靠经验和静态系统进行管理变得愈发吃力。在这一背景下&#xff0c;数字孪…

作者头像 李华
网站建设 2026/4/15 16:22:35

医疗报告辅助阅读:GLM-4.6V-Flash-WEB提取关键指标演示

医疗报告辅助阅读&#xff1a;GLM-4.6V-Flash-WEB提取关键指标演示 在基层医院和体检中心&#xff0c;每天有大量影像检查单、生化检验报告、病理图文摘要需要医生快速审阅。一张CT报告里嵌着十几项数值指标&#xff0c;一份血常规结果包含二十多个参数&#xff0c;而医生平均…

作者头像 李华