news 2026/4/12 16:21:56

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/4 16:14:57

SeqGPT-560M轻量高效部署:1.1GB模型在消费级RTX 3090上流畅运行

SeqGPT-560M轻量高效部署&#xff1a;1.1GB模型在消费级RTX 3090上流畅运行 你是不是也遇到过这样的问题&#xff1a;想快速验证一个文本理解任务&#xff0c;却要花半天搭环境、下载模型、写推理脚本&#xff1f;训练数据还没凑齐&#xff0c;显存已经爆了。今天要聊的这个模…

作者头像 李华
网站建设 2026/4/9 13:53:45

小白必看!灵毓秀-牧神-造相Z-Turbo文生图模型保姆级使用指南

小白必看&#xff01;灵毓秀-牧神-造相Z-Turbo文生图模型保姆级使用指南 前言&#xff1a; 最近在AI绘画圈里刷到一个特别有意思的小众模型——灵毓秀-牧神-造相Z-Turbo。它不是泛泛而谈的“古风美女”&#xff0c;而是专为《牧神记》原著粉丝打造的定制化文生图模型&#xff…

作者头像 李华
网站建设 2026/3/30 6:21:26

[工业自动化-33]:什么是线性自动控制系统与非线性自动控制系统?

我们用通俗易懂、生活化的方式来解释线性自动控制系统 和非线性自动控制系统 的区别。 &#x1f31f; 一句话总结&#xff1a; 线性系统&#xff1a;输入加倍&#xff0c;输出也加倍&#xff0c;行为“规矩”、可预测。 非线性系统&#xff1a;输入加倍&#xff0c;输出可能翻倍…

作者头像 李华
网站建设 2026/3/21 6:05:48

遇到报错别慌!GLM-TTS常见问题速查手册

遇到报错别慌&#xff01;GLM-TTS常见问题速查手册 你刚点下“ 开始合成”&#xff0c;页面却卡在加载状态&#xff1b; 上传了三段不同音色的参考音频&#xff0c;生成结果却一个比一个失真&#xff1b; 批量任务跑了一半突然中断&#xff0c;日志里只有一行红色报错&#xf…

作者头像 李华
网站建设 2026/4/9 16:36:24

为什么Youtu-2B部署总失败?镜像免配置教程来帮你

为什么Youtu-2B部署总失败&#xff1f;镜像免配置教程来帮你 1. 真实痛点&#xff1a;不是模型不行&#xff0c;是部署卡在“看不见的坑”里 你是不是也遇到过这些情况&#xff1f; 下载了Youtu-2B镜像&#xff0c;一启动就报错 CUDA out of memory&#xff0c;明明显卡有16…

作者头像 李华
网站建设 2026/4/4 18:18:08

一文说清vivado2019.2在Windows上的破解安装

Vivado 2019.2:在 Windows 上稳稳跑起来的硬核实践手记 去年帮一所地方高校的嵌入式实验室重装 FPGA 开发环境,三台 Win10 工作站,清一色 i7+32GB+512GB NVMe,结果两台卡在启动界面报 ERROR: [Common 17-345] Unable to get a license for feature Vivado_Suite ——不是…

作者头像 李华