新闻中心

C++ 如何使用 set_C++ set 集合容器基础用法

2025-11-05
浏览次数:
返回列表
C++中set是基于红黑树的有序唯一元素容器,支持O(log n)插入、查找、删除。需包含头文件,常用操作包括insert、erase、find、count等,元素不可修改,可自定义排序如std::greater实现降序。

c++ 如何使用 set_c++ set 集合容器基础用法

在 C++ 中,set 是一种关联式容器,用于存储唯一元素,并自动按升序排序。它基于红黑树实现,查找、插入和删除操作的时间复杂度为 O(log n),适合需要有序且不重复数据的场景。

包含头文件与定义 set

使用 set 需要包含头文件 #include 。定义方式如下:

  • std::set s; —— 创建一个存放整数的集合
  • std::set<:string>words; —— 存放字符串的集合

常用操作方法

set 提供了多种成员函数来操作数据:

  • insert(value):插入元素,若已存在则不执行插入
  • erase(value):删除指定值的元素
  • find(value):查找元素,返回迭代器,未找到返回 end()
  • count(value):判断元素是否存在(返回 0 或 1)
  • size():返回元素个数
  • empty():判断是否为空
  • clear():清空所有元素

示例代码:

#include <iostream>
#include <set>
int main() {
    std::set<int> s;
    s.insert(10);
    s.insert(5);
    s.insert(10); // 重复,不会插入
    s.insert(15);

    for (const auto& x : s) {
        std::cout << x << " "; // 输出:5 10 15
    }

    if (s.find(10) != s.end()) {
        std::cout << "\n找到了 10";
    }

    s.erase(5);
    std::cout << "\n大小:" << s.size(); // 输出:2
    return 0;
}

自定义排序规则

默认情况下,set 按升序排列。可以通过提供比较函数改变排序方式。例如降序:

VALL-E VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 134 查看详情 VALL-E
std::set<int, std::greater<int>> desc_set;
desc_set.insert(10);
desc_set.insert(5);
desc_set.insert(15);
// 遍历输出:15 10 5

也可以传入自定义结构体或类,需重载比较运算符或提供仿函数。

注意事项

set 中的元素是只读的,修改会影响排序结构,因此不能直接修改元素值。如需更新,应先删除再插入新值。

基本上就这些。掌握 insert、find、erase 和遍历操作,就能应对大多数使用场景。不复杂但容易忽略细节,比如重复插入无效、遍历时不能修改等。用熟了很顺手。

以上就是C++ 如何使用 set_C++ set 集合容器基础用法的详细内容,更多请关注其它相关文章!


# 头文件  # 律师营销推广开拓思路  # 怎么推广俱乐部营销方案  # 濮阳网站建设策划  # 关键词排名怎么做上  # 白坭网站建设热线  # 衢州网站建设方案  # 网站权重优化价格怎么算  # 江山网络推广seo优化  # 青山seo排名分析  # seo做的很好的网站  # 游戏开发  # 如何用  # word  # 遍历  # 是一种  # 如何使用  # 升序  # 自定义  # 如何实现  # 运算符  # 排列  # stream  # ios  # c++  # ai 


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


相关推荐: 抖音网页版平台入口 抖音网页版官网在线访问教程  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  优化大型XML文件解析:基于Python流式处理的内存高效方案  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  在python-socketio事件处理器中安全访问Flask应用上下文  2025年云电脑操作系统体验 | 无需本地硬件,随时随地使用高性能PC  服务端验证_j*ascript输入检查  如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化  火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧  使用Python高效删除Word宏并转换DOCM为DOCX格式  J*a里如何使用forEach遍历Map_Map遍历方法说明  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  AO3官网镜像链接 Archive of Our Own同人文在线浏览  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  多闪网页版在线观看免费入口_多闪官网访问入口  如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流  优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  自定义Bag-of-Words实现:处理带负号的词汇权重  凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配  Win10桌面图标出现小盾牌怎么办 Win10去除UAC图标教程【解决】  Typer应用中动态命令行参数的解析与处理  Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  J*aScript map 方法中处理循环元素为空数组的策略  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  如何在Promise链中有效终止错误处理后的执行  J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案  Animex动漫社网入口地址 Animex动漫社网正版在线入口  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  抖音创作助手登录入口_抖音创作辅助工具官网直达  Lar*el递归关系中排除子孙节点的策略  妖精动漫免费平台 妖精动漫官网资源观看网址  Flexbox布局实践:实现粘性导航栏与底部固定页脚  Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】  必由学官网快捷入口 必由学网页版在线学习平台  qq游戏跨平台入口_qq游戏多设备同步登录  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  qq游戏手机版下载安装_qq游戏移动端入口  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站  小米汽车11月交付量突破40000台!雷军:将继续努力  HTML长属性值处理:表单action路径优化与代码规范应对  Angular中单选按钮的正确使用与常见陷阱解析 

搜索