news 2026/4/15 10:45:47

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/11 21:54:23

YOLOE官版镜像推理速度快1.4倍?实测结果来了

YOLOE官版镜像推理速度快1.4倍&#xff1f;实测结果来了 你有没有遇到过这样的情况&#xff1a;模型结构明明很轻量&#xff0c;参数量比YOLOv8还少&#xff0c;但一跑推理就卡在GPU显存加载上&#xff0c;预热时间长、首帧延迟高、批量处理吞吐上不去&#xff1f;更别提在开放…

作者头像 李华
网站建设 2026/4/12 19:10:59

企业级AI应用实战:Qwen3-VL多模态助手飞书集成

企业级AI应用实战&#xff1a;Qwen3-VL多模态助手飞书集成 你是否经历过这样的场景&#xff1f;市场部同事凌晨三点发来一张活动海报截图&#xff0c;问&#xff1a;“这个配色会不会太刺眼&#xff1f;”&#xff1b;客服团队每天要人工核对上百张用户上传的故障设备照片&…

作者头像 李华
网站建设 2026/4/11 3:31:22

Llama-3.2-3B生产环境:Ollama部署+K8s实现弹性扩缩容文本服务集群

Llama-3.2-3B生产环境&#xff1a;Ollama部署K8s实现弹性扩缩容文本服务集群 1. 为什么需要生产级的Llama-3.2-3B服务 你可能已经试过在本地用ollama run llama3.2:3b跑通一个对话&#xff0c;但那只是玩具。真正用在业务里&#xff0c;比如给客服系统提供实时回复、为内容平…

作者头像 李华
网站建设 2026/4/12 11:01:31

低成本微调方案:单卡RTX4090D跑通7B级别模型

低成本微调方案&#xff1a;单卡RTX4090D跑通7B级别模型 你是否也经历过这样的困扰&#xff1a;想微调一个7B级别的大模型&#xff0c;却发现显存不够、环境配置复杂、训练时间太长&#xff1f;动辄需要双卡A100、多卡并行、DeepSpeed Zero3配置——这些门槛让很多开发者望而却…

作者头像 李华
网站建设 2026/4/3 4:11:26

OpenMV动态阈值调整策略:实战中的应用示例

OpenMV动态阈值实战手记:当光照在变,你的阈值还在硬编码吗? 去年冬天调试一条食品包装产线时,我盯着OpenMV串口不停刷出的 [] 发了十分钟呆——明明摄像头正对着鲜红的番茄酱瓶盖, find_blobs() 却始终返回空列表。换灯、调角度、甚至把镜头擦了三遍,问题依旧。直到…

作者头像 李华