小学生学C++编程语法知识(STL容器(8、认识Set(集合)))
STL课程第八课《魔法收藏册——认识Set集合》本课目标理解什么是 Set集合。理解 Set 自动去重、自动排序的特点。熟练掌握insert()、erase()、find()、count()、size()、empty()。能利用 Set 完成去重、判断是否存在等问题。为以后学习 Map、二分查找和 STL 算法打基础。第一幕 国王收集宝石今天。程序王国来了许多商人。他们给国王送来了很多宝石。可是。有一些宝石。长得一模一样。例如5 3 8 5 2 3 1 8请问如果你是国王。你的收藏柜里。会放两颗一模一样的宝石吗同学们回答不会。今天认识的新朋友。就是Set中文名字集合它最大的本领就是自动去重。第二幕 什么叫自动去重老师依次放入5柜子5放入3柜子3 5放入8柜子3 5 8又放5请问会不会变成3 5 5 8同学们猜不会完全正确Set说已经有了。不要了。所以。还是3 5 8第三幕 Set还有一个神奇本领老师继续放2柜子变成2 3 5 8老师问为什么不是3 5 8 2因为。Set还有第二个本领。自动排序。默认从小到大。第四幕 请出Set头文件#includeiostream #includeset using namespace std;创建setint s;老师解释set集合。int保存整数。s变量名字。第五幕 放入元素——insert()加入s.insert(5); s.insert(3); s.insert(8); s.insert(5); s.insert(2);请问里面是什么答案2 3 5 8重复的5。自动消失。第六幕 遍历SetSet没有s[0]为什么因为。Set不是数组。但是。可以范围for。for(int x:s) { coutx ; }输出2 3 5 8第七幕 第一个完整程序#includeiostream #includeset using namespace std; int main() { setint s; s.insert(5); s.insert(3); s.insert(8); s.insert(5); s.insert(2); for(int x:s) { coutx ; } return 0; }输出2 3 5 8第八幕 删除元素——erase()例如删除s.erase(5);结果2 3 8老师强调没有5了。以后再erase(5)也不会报错。第九幕 查找元素——find()请问有没有8程序if(s.find(8)!s.end()) { cout找到了; }输出找到了解释如果找不到。find()。返回s.end()表示集合最后面的后一个位置。第十幕 count()——有没有还有一种更简单的方法。couts.count(8);输出1请问为什么不是2因为。Set里面。最多只有一个。所以count。只能0。或者1。例如couts.count(100);输出0第十一幕 size和empty人数s.size();是否为空s.empty();和以前一样。第十二幕 Set为什么不能下标请问Vectora[2]Set呢不能。为什么因为。Set不是连续存放。它内部是一棵红黑树Red-Black Tree。告诉同学们Set内部不是数组所以不能用下标访问。第十三幕 课堂实践一——数字去重输入8 5 3 8 5 2 3 1 8要求输出1 2 3 5 8参考程序#includeiostream #includeset using namespace std; int main() { int n; cinn; setint s; for(int i0;in;i) { int x; cinx; s.insert(x); } for(int x:s) { coutx ; } return 0; }第十四幕 课堂实践二——有没有这个数字输入5 10 30 50 20 40 30输出YES如果输入100输出NO同学们使用find()或者count()完成。第十五幕 课堂实践三——班级签到今天。同学签到。如果已经签到。提醒你已经签过到了输入Tom Lucy Tom Jack Lucy输出Tom 第一次签到 Lucy 第一次签到 Tom 已签到 Jack 第一次签到 Lucy 已签到提示每来一个名字。先count()判断。没有。就insert()第十六幕 Vector 和 Set 有什么区别画表VectorSet可以重复自动去重保持加入顺序自动排序可以下标访问不可以可以排序手动自动排序强调Vector 像一个普通收纳箱放进去什么就是什么。Set 像一个智能收藏柜自动整理、自动去重。第十七幕 Set 真正的大本领以后。很多竞赛题都会出现例如✅ 判断有没有出现过。✅ 判断有没有重复数字。✅ 去重。✅ 维护有序数据。例如CSP-J、GESP 中很多模拟题、数据处理题都会直接使用set。以后学习map其实就是Set升级版。本课总结今天我们认识了Set集合。它最大的特点就是自动去重自动排序。掌握了六个最常用的成员函数成员函数作用生活中的理解insert(x)插入元素收藏一件宝物erase(x)删除元素把宝物移出收藏柜find(x)查找元素看看有没有这件宝物count(x)判断是否存在有返回1没有返回0size()元素个数收藏了多少件宝物empty()是否为空收藏柜是不是空的最后送给孩子一句口诀集合 Set 真神奇重复元素不要你放进去自己排找一找很快来去重查找它最棒学会 Set 用处广 课堂拓展为什么很多竞赛喜欢用 Set汉克老师提出一个问题有100万个数字。问有没有数字 888888如果用数组。可能要一个一个找。如果用set。可以很快判断if(s.count(888888)) { cout存在; } else { cout不存在; }set就像一本整理好的通讯录不需要从第一页翻到最后一页查找速度比在无序数组中逐个寻找快得多。下一节课我们学习Map映射Set 是只有钥匙的集合Map 则是钥匙 对应信息的集合。

相关新闻

C语言基础7—排序与一维字符型数组

C语言基础7—排序与一维字符型数组

普通数组只能存储一组数字,字符数组的出现,让C语言拥有了保存字符串的能力。字符数组本质上依旧是连续内存空间,专门存放字符数据,字符串输入输出、拷贝、长度计算都离不开它。 \0 结束标志、越界访问等问题,是学习字符…

2026/7/23 3:10:28 阅读更多 →
Zephyr学习 - 第二章 -3:`default`、符号可见性与 `menuconfig`

Zephyr学习 - 第二章 -3:`default`、符号可见性与 `menuconfig`

02-3:default、符号可见性与 menuconfig 验证方式:Zephyr 本地文档、.config、autoconf.h、native_sim/native/64 验证结论:模拟确认 1. 本节目标 理解四个问题: 为什么 default 只是候选值,而不是强制值;多…

2026/7/23 3:10:28 阅读更多 →
前端转大模型:为什么你的 Agent 上线就崩?权限与日志才是 2026 的硬通货

前端转大模型:为什么你的 Agent 上线就崩?权限与日志才是 2026 的硬通货

聊《做过前端的人学大模型,哪些经验可以直接迁移?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值…

2026/7/23 3:09:28 阅读更多 →

最新新闻

AI大模型核心原理与使用指南:从技术到实践

AI大模型核心原理与使用指南:从技术到实践

1. 为什么普通人需要了解AI大模型?最近两年,AI大模型突然成为街头巷尾热议的话题。从ChatGPT到文心一言,这些能写诗、编程、聊天的AI工具让很多人既好奇又困惑。作为一个在AI行业摸爬滚打多年的从业者,我发现身边朋友最常问的问题…

2026/7/23 3:48:42 阅读更多 →
AI工具如何提升本科生论文写作效率与质量

AI工具如何提升本科生论文写作效率与质量

1. 本科生论文写作的痛点与AI工具的价值写论文对本科生来说就像第一次独自远行——明明知道目的地在哪里,却总在找路标时迷路。从开题报告到文献综述,从数据收集到格式调整,每个环节都可能成为拦路虎。去年指导毕业论文时,我发现学…

2026/7/23 3:48:42 阅读更多 →
AI论文降重工具Paperzz的技术原理与使用指南

AI论文降重工具Paperzz的技术原理与使用指南

1. 项目背景与核心需求最近在学术圈遇到个挺有意思的现象:越来越多学生开始用AI辅助写论文,但交上去总被查重系统打回来。上周就有个研究生找我吐槽,说用某AI工具生成的文献综述部分,在知网上查重率直接飙到40%多,差点…

2026/7/23 3:48:42 阅读更多 →
Grok Build 0.2.105更新解析:Grok 4.5模型如何提升AI编程效率

Grok Build 0.2.105更新解析:Grok 4.5模型如何提升AI编程效率

如果你最近在关注 AI 编程助手领域,可能已经注意到一个现象:传统的代码补全工具正在被更智能的"对话式编程"所替代。而在这场变革中,Grok Build 0.2.105 的更新将 Grok 4.5 设为默认模型,标志着一个重要的转折点——这不…

2026/7/23 3:48:41 阅读更多 →
游戏开发中的定时器与冷却机制实现

游戏开发中的定时器与冷却机制实现

1. 千星沙箱中的定时器与机关交互机制在游戏开发领域,千星沙箱以其高度自由的交互设计而闻名。这个引擎允许开发者通过可视化编程和脚本结合的方式,创造出复杂的游戏逻辑。今天我要分享的是如何利用定时器实现选项卡激活机关的冷却效果——这是许多解谜类…

2026/7/23 3:48:41 阅读更多 →
机房动环监控系统温湿度传感器选型与维护指南

机房动环监控系统温湿度传感器选型与维护指南

1. 机房动环监控系统概述机房动环监控系统(动力环境监控系统)是保障数据中心、通信基站等关键设施稳定运行的核心管理系统。这套系统通过各类传感器实时采集环境参数和设备状态,实现对机房环境的全方位监控。温湿度监控作为动环系统中最基础的…

2026/7/23 3:47:41 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻