新闻中心

c++中set容器怎么使用_c++ set集合容器基础用法

2025-11-01
浏览次数:
返回列表
set是C++中基于红黑树实现的关联容器,自动排序且元素唯一。需包含头文件,使用insert插入元素(重复值无效),erase删除元素,find查找元素(返回迭代器或end()),支持范围for循环遍历(升序)。常用操作包括size()、empty()、clear()和count()。默认升序,可自定义比较函数实现降序等排序。适用于去重与有序存储,不支持重复元素或手动控制位置。核心操作为insert、find、erase和遍历。

c++中set容器怎么使用_c++ set集合容器基础用法

在C++中,set 是一个非常实用的关联式容器,位于 #include 头文件中。它内部基于红黑树实现,能够自动对元素进行排序,并且保证元素的唯一性(不允许重复值)。下面介绍 set 的基本用法,适合初学者快速上手。

1. 包含头文件与定义 set

使用 set 前必须包含对应的头文件:

#include

定义一个 set 容器的方式如下:

std::set s; // T 是数据类型,如 int、string 等

例如:

std::set numbers; // 存储整数的集合

std::set<:string>words; // 存储字符串的集合

2. 插入元素(insert)

使用 insert() 函数向 set 中添加元素,相同值不会被重复插入。

示例:

numbers.insert(10);

numbers.insert(5);

numbers.insert(10); // 重复值,不会被插入

此时 numbers 中只有 5 和 10,且自动按升序排列。

3. 删除元素(erase)

可以使用 erase() 删除指定值或迭代器指向的元素。

示例:

numbers.erase(5); // 删除值为 5 的元素

numbers.erase(numbers.begin()); // 删除第一个元素

4. 查找元素(find)

使用 find() 查找某个值是否存在。如果找到,返回指向该元素的迭代器;否则返回 end()

示例:

if (numbers.find(10) != numbers.end()) {

  std::cout

}

短影AI 短影AI

长视频一键生成精彩短视频

短影AI 170 查看详情 短影AI

5. 遍历 set

set 中的元素默认从小到大排序,可以用范围 for 循环或迭代器遍历。

示例:

for (const auto& x : numbers) {

  std::cout

}

// 输出:5 10(按升序)

6. 其他常用操作

size():返回元素个数

empty():判断是否为空

clear():清空所有元素

count():检查某值是否存在(返回 0 或 1,因为 set 不允许重复)

示例:

if (!numbers.empty()) {

  std::cout

}

7. 自定义排序(可选)

默认 set 按升序排列,可以通过传入比较函数改变顺序。例如降序:

std::set> desc_set;

desc_set.insert(3);

desc_set.insert(1);

desc_set.insert(5);

遍历时输出为:5 3 1

基本上就这些。set 适合用于去重和有序存储的场景,比如统计不重复的数据、查找优化等。掌握 insert、find、erase 和遍历这几个核心操作,就能应对大多数基础需求了。不复杂但容易忽略的是:set 会自动排序且不能有重复,所以不适合需要保留重复元素或自定义位置的场景。

以上就是c++++中set容器怎么使用_c++ set集合容器基础用法的详细内容,更多请关注其它相关文章!


# 是否存在  # 金堂网站网络推广平台  # 鹿泉手机网站建设  # 怎么建设宠物之家网站呢  # 开福区营销推广中心地址  # 紫云网站关键词优化  # 吕梁附近网站推广靠谱吗  # 西城网站建设推广优化  # 甘肃英文关键词排名  # 房产网站建设网站优化  # 望都抖音关键词排名外包  # 如何实现  # word  # 多线程  # 并与  # 迭代  # 头文件  # 自定义  # 递归  # 遍历  # 升序  # 排列  # c++ 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*a递归快速排序中静态变量的状态管理与陷阱  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  C++如何解决segmentation fault_C++段错误调试与原因分析  126邮箱网页版官方入口 126邮箱账号在线登录平台  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统  手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践  浏览器打开即用 美图秀秀网页版入口  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  整合Supabase认证与Django模型:跨模式迁移的解决方案  将JSON对象数组转置为键值对列表的实用指南  yy漫画网页版官方入口_yy漫画官网登录页面链接  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  qq游戏跨平台入口_qq游戏多设备同步登录  Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】  Go Martini框架:动态服务解码后的图片内容  聚水潭ERP登录页面入口 聚水潭ERP官网登录界面  微信网页版登录教程_微信网页版登录入口在哪  Pandas DataFrame:高效添加条件计算列  Golang如何实现简单的Web表单_Golang表单提交与验证处理方法  Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  如何使用 Excel 发布器与 Power BI 分享 Excel 洞察  微博网页版首页入口 微博电脑端官网登录链接  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  将HTML动态表格多行数据保存到Google Sheet的教程  Mac怎么锁定备忘录_Mac备忘录加密设置教程  大象笔记网页版入口 印象笔记网页版登录入口  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  解决Python单元测试中Mock异常方法调用计数为零的问题  Kafka Streams中基于消息头条件过滤消息的实现指南  Angular Material 垂直步进器:实现底部到顶部排序的教程  2026春节假期时间安排 2026春节假日查询  微信客户端如何收红包_微信客户端接收红包使用教程  抖音从哪里进入网页版_抖音官方入口链接  在python-socketio事件处理器中安全访问Flask应用上下文  win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】  J*a实现学校排课程序_面向对象结构化项目示例  MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景  Bing引擎入口最新2025 Bing搜索免费官方登录  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  Tabulator表格中精确实现日期时间排序的指南  Django表单提交验证失败后保持字段值不刷新  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持  如何在Promise链中有效终止错误处理后的执行 

搜索