c++中set怎么使用_set容器基本用法指南

C++中set是基于红黑树的关联容器,自动排序并保证元素唯一。需包含头文件,使用insert插入元素(重复值无效),erase删除元素,find或count查找,支持范围for循环遍历,元素按升序排列,可自定义排序规则如std::greater实现降序,常用操作还包括size、empty和clear,插入与查找时间复杂度均为O(log n)。

c++中set怎么使用_set容器基本用法指南

在C++中,set 是一个非常实用的关联式容器,属于 STL(标准模板库)的一部分。它能自动对存储的元素进行排序,并保证元素的唯一性。下面详细介绍 set 的基本用法,帮助你快速上手。

1. 包含头文件和定义set

使用 set 之前,需要包含对应的头文件:

#include

然后可以定义一个 set 容器:

std::set mySet; // 存储整数的 set
std::set strSet; // 存储字符串的 set

2. 插入元素

使用 insert() 函数向 set 中添加元素。如果元素已存在,插入不会生效(set 不允许重复值)。

立即学习“C++免费学习笔记(深入)”;

mySet.insert(10);
mySet.insert(5);
mySet.insert(10); // 重复,不会插入

插入后,set 会自动按升序排列,此时内容为:5, 10。

3. 删除元素

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

mySet.erase(5); // 删除值为 5 的元素
mySet.erase(mySet.begin()); // 删除第一个元素
mySet.erase(it); // 删除迭代器 it 指向的元素

4. 查找元素

使用 find() 查找元素,返回一个迭代器。若未找到,返回 set::end()。

if (mySet.find(10) != mySet.end()) {
    std::cout }

也可以用 count() 判断元素是否存在(在 set 中结果只能是 0 或 1)。

5. 遍历set

由于 set 本身有序,遍历时元素按升序输出。可以使用范围 for 循环或迭代器:

for (const auto& elem : mySet) {
    std::cout }

或者:

for (auto it = mySet.begin(); it != mySet.end(); ++it) {
    std::cout }

6. 其他常用操作

size():返回元素个数 empty():判断是否为空 clear():清空所有元素 begin()/end():返回首尾迭代器

示例:

if (!mySet.empty()) {
    std::cout }

7. 自定义排序规则

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

std::set> descendingSet;
descendingSet.insert(10);
descendingSet.insert(5);
// 输出顺序为:10, 5

基本上就这些。set 在去重和有序访问场景下特别有用,比如统计不重复数据、维护有序列表等。掌握 insert、find、erase 和遍历操作,就能应对大多数情况了。注意它底层是红黑树实现,插入和查找时间复杂度为 O(log n),效率稳定。

以上就是c++++中set怎么使用_set容器基本用法指南的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1477194.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
c++怎么连接PostgreSQL数据库_c++ PostgreSQL数据库连接方法
上一篇 2025年12月19日 01:49:29
c++中什么是RAII原则_RAII资源管理原则核心思想解读
下一篇 2025年12月19日 01:49:37

相关推荐

  • 如何用Java处理点云数据?PCL库集成方案

    如何用Java处理点云数据?PCL库集成方案如何用Java处理点云数据?PCL库集成方案如何用Java处理点云数据?PCL库集成方案如何用Java处理点云数据?PCL库集成方案

    java能处理点云数据,但不像#%#$#%@%@%$#%$#%#%#$%@_23eeeb4347bdd26bfc++6b7ee9a3b755dd或c++那样直接,通常通过调用原生库(如pcl)实现。具体步骤为:1. 用c++编写封装pcl功能的共享库,如加载和滤波点云;2. 在java中声明nati…

    2026年10月7日 • 用户投稿
    100
  • 罕见红月亮将持续83分钟:9月8日凌晨月全食要来了!

    罕见红月亮将持续83分钟:9月8日凌晨月全食要来了!罕见红月亮将持续83分钟:9月8日凌晨月全食要来了!罕见红月亮将持续83分钟:9月8日凌晨月全食要来了!罕见红月亮将持续83分钟:9月8日凌晨月全食要来了!

    据广州市五羊天象馆预测,一场今年最重要、最值得观赏的天象奇观——月全食(红月亮)即将在9月8日凌晨上演。届时,我国各地乃至亚洲、欧洲、大洋洲、非洲和南极洲等地区的朋友们都有机会一睹风采。此次“红月亮”的持续时间长达83分钟(从食既到生光),是十分罕见的一次天文盛宴。 月全食是怎样形成的? 月食在天文…

    2026年10月7日 • 用户投稿
    100
  • 如何用Java实现数字取证?磁盘数据恢复

    如何用Java实现数字取证?磁盘数据恢复如何用Java实现数字取证?磁盘数据恢复如何用Java实现数字取证?磁盘数据恢复如何用Java实现数字取证?磁盘数据恢复

    java在数字取证中主要扮演构建跨平台取证#%#$#%@%@%$#%$#%#%#$%@_20dc++e2c6fa909a5cd62526615fe2788a和自动化脚本的角色,适合逻辑处理与数据管理。1. java通过randomaccessfile和nio包实现对磁盘原始字节流的高效读取;2. 解…

    2026年10月6日 • 用户投稿
    100
  • google浏览器自动填充的地址信息怎么修改或删除_google浏览器自动填充地址修改方法

    打开Chrome浏览器,点击右上角三点菜单,选择“设置”进入主页面。2. 在左侧栏点击“自动填充”,再选择“地址和其他信息”进入管理界面。3. 修改地址时,将鼠标悬停在目标地址上,点击铅笔图标编辑信息,完成后点击“保存”。4. 删除地址时,同样悬停后点击垃圾桶图标,确认删除即可移除该地址。 如果您在…

    2026年10月6日
    100
  • google浏览器手机版 google浏览器手机版最新入口

    google浏览器手机版 google浏览器手机版最新入口google浏览器手机版 google浏览器手机版最新入口google浏览器手机版 google浏览器手机版最新入口google浏览器手机版 google浏览器手机版最新入口

    google浏览器手机版最新入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来google浏览器手机版最新入口,感兴趣的网友一起随小编来瞧瞧吧! https://www.google.com/chrome/ 界面简洁直观 1、启动浏览器后可以看到干净的主屏幕,没有过多复杂的元素堆砌,搜索…

    2026年10月6日 • 用户投稿
    100
  • 滴答清单任务动态功能使用教程_滴答清单任务动态与修改记录查看步骤

    滴答清单任务动态功能使用教程_滴答清单任务动态与修改记录查看步骤滴答清单任务动态功能使用教程_滴答清单任务动态与修改记录查看步骤滴答清单任务动态功能使用教程_滴答清单任务动态与修改记录查看步骤滴答清单任务动态功能使用教程_滴答清单任务动态与修改记录查看步骤

    答案:滴答清单任务动态功能可追踪任务变更与团队协作记录。在iPhone 15 Pro(iOS 18)运行环境下,进入任务详情页下滑开启任务动态后,可查看按时间倒序排列的操作记录;通过筛选图标可定位评论、截止日或负责人变更等特定事件;评论与回复以气泡图标标识,支持展开查看及回复,便于团队协作追溯。 如…

    2026年10月6日 • 用户投稿
    100
  • 嵌入式Linux学习路线

    在这条学习之路上继续前进吧!以下是我对linux学习路线的总结,共分为四个阶段: 入门阶段 – 适应新环境,熟练掌握Linux命令行从Windows转向Linux可能有些艰难,因为人们习惯于通过图形界面获取信息。因此,我们需要从熟悉命令行开始。在这个阶段,推荐阅读《鸟哥的私房菜》和《Li…

    2026年10月6日
    100
  • VSCode如何实现代码行为分析 VSCode运行时特性可视化工具

    VSCode如何实现代码行为分析 VSCode运行时特性可视化工具VSCode如何实现代码行为分析 VSCode运行时特性可视化工具VSCode如何实现代码行为分析 VSCode运行时特性可视化工具VSCode如何实现代码行为分析 VSCode运行时特性可视化工具

    高效调试与性能瓶颈定位需结合断点调试、条件断点、日志断点及内置调试器功能,通过launch.json配置调试环境,利用cpu性能分析和堆快照定位问题;2. 可视化运行时数据依赖第三方扩展,如调试器增强类、性能分析查看器、内存/cpu监控、日志可视化工具和调用图生成器,按语言和项目选择合适扩展;3. …

    2026年10月6日 • 用户投稿
    100
  • Java调用Rust本地方法的实现探索

    Java调用Rust本地方法的实现探索Java调用Rust本地方法的实现探索Java调用Rust本地方法的实现探索Java调用Rust本地方法的实现探索

    java调用rust的核心方式是通过jni实现跨语言互操作;2. 具体步骤包括:java端声明native方法并生成jni头文件,rust使用jni crate实现对应函数并编译为共享库,最后加载库运行程序;3. 优势在于性能优化、复用rust生态和系统级编程能力;4. jni是jvm官方接口,虽复…

    2026年10月6日 • 用户投稿
    200
  • 即梦ai如何合并多个片段 即梦ai视频拼接功能教程

    即梦ai如何合并多个片段 即梦ai视频拼接功能教程即梦ai如何合并多个片段 即梦ai视频拼接功能教程即梦ai如何合并多个片段 即梦ai视频拼接功能教程即梦ai如何合并多个片段 即梦ai视频拼接功能教程

    如何使用即梦ai进行视频拼接?使用即梦ai进行视频拼接的步骤如下:1. 打开即梦ai软件,进入视频编辑界面;2. 点击“添加片段”按钮,导入视频片段;3. 调整片段顺序和时长;4. 点击“导出”按钮完成拼接。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R…

    2026年10月6日 • 用户投稿
    000
  • iSlide如何预览多页文件_iSlide多页文件预览的处理技巧

    iSlide如何预览多页文件_iSlide多页文件预览的处理技巧iSlide如何预览多页文件_iSlide多页文件预览的处理技巧iSlide如何预览多页文件_iSlide多页文件预览的处理技巧iSlide如何预览多页文件_iSlide多页文件预览的处理技巧

    可通过幻灯片浏览视图、iSlide版式库、导出PDF及图示库批量预览实现多页高效查看:一、点击“视图”→“幻灯片浏览”以缩略图形式展示所有页面;二、在iSlide选项卡中使用“版式库”以网格形式预览主题内所有版式;三、将文件另存为PDF后在阅读器中以多页模式查看;四、通过iSlide图示库插入多个图…

    2026年10月6日 • 用户投稿
    000
  • laravel怎么使用Livewire创建动态交互界面_laravel Livewire动态交互界面实现方法

    Livewire通过PHP实现前端交互,无需大量JavaScript。安装后生成组件,利用属性绑定和方法处理状态更新,支持实时搜索、表单验证及组件间事件通信,极大简化Laravel动态界面开发流程。 Laravel 中使用 Livewire 创建动态交互界面非常高效,无需手动编写大量 JavaScr…

    2026年10月6日
    100
  • Java游戏开发 Java 2D游戏引擎入门教程

    Java游戏开发 Java 2D游戏引擎入门教程Java游戏开发 Java 2D游戏引擎入门教程Java游戏开发 Java 2D游戏引擎入门教程Java游戏开发 Java 2D游戏引擎入门教程

    在java中开发2d游戏的核心在于理解游戏循环、绘图、输入处理和碰撞检测等基本要素,并通过awt/swing从零构建框架以深入理解本质。解决方案分五步:1. 游戏循环使用独立线程持续更新游戏状态并重绘屏幕;2. 用jpanel的paintcomponent方法结合graphics2d进行绘图;3. …

    2026年10月6日 • 用户投稿
    100
  • 如何用Java实现字符串反转 Java反转字符串的多种方式

    如何用Java实现字符串反转 Java反转字符串的多种方式如何用Java实现字符串反转 Java反转字符串的多种方式如何用Java实现字符串反转 Java反转字符串的多种方式如何用Java实现字符串反转 Java反转字符串的多种方式

    在java中,反转字符串最直接且效率最高的方法是使用stringbuilder类的reverse()方法。1. stringbuilder.reverse()方法直接在原字符序列上操作,避免了频繁创建新对象,性能更优;2. 代码简洁易读,适合大多数实际开发场景;3. 手动循环反转适用于学习算法、面试…

    2026年10月5日 • 用户投稿
    200
  • Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明

    Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明Cursor 0.46更新,新增支持Claude 3.7 + GPT 4.5,Cursor Pro 无限续杯攻略,全自动化工具使用说明

    cursor已经更新到v0.46版本了,随着claude 3.7和gpt 4.5发布,cursor官网也同步更新支持了,这次0.46版更新,composer 与 chat已经合并在一起了,界面更清爽,agent更聪明。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepS…

    2026年10月5日 • 用户投稿
    100
  • 修复runtime error的实用方法

    修复runtime error的实用方法修复runtime error的实用方法修复runtime error的实用方法修复runtime error的实用方法

    在安装或运行应用程序、启动游戏时,系统有时会提示“mic++rosoft visual c++ runtime library error”或“runtime error”。这类问题通常由运行库文件缺失、损坏,或程序与系统不兼容引起。常见的解决方式包括重新安装或修复microsoft visual …

    2026年10月5日 • 用户投稿
    200
  • 教你win7文件夹排序方法

    教你win7文件夹排序方法教你win7文件夹排序方法教你win7文件夹排序方法教你win7文件夹排序方法

    win7系统中如何对文件夹进行排序?不少用户反映,文件夹排列杂乱无章,一个个查找费时又费力。别担心,下面为大家带来一个简单实用的文件夹排序技巧,一起来看看具体操作步骤吧! 1、首先启动电脑,点击“计算机”图标进入主界面; 2、选择你需要操作的磁盘分区,双击打开进入该盘符; 3、此时可以看到里面存在大…

    2026年10月5日 • 用户投稿
    000
  • composer global require安装的包找不到命令如何解决

    composer global require安装的包找不到命令如何解决composer global require安装的包找不到命令如何解决composer global require安装的包找不到命令如何解决composer global require安装的包找不到命令如何解决

    答案是未将Composer全局vendor/bin目录添加到系统PATH环境变量。需通过composer config –global –absolute ‘home’确认路径,再将对应bin目录加入PATH,最后重启终端验证命令是否生效。 使用 co…

    2026年10月5日 • 用户投稿
    100
  • 如何使用MySQL在C#中实现数据更新操作

    如何使用mysql在c#中实现数据更新操作 MySQL是一种广泛使用的关系型数据库,它提供了强大的数据管理和查询功能。在C#开发中,我们常常需要将数据存储到MySQL中,并且在需要的时候更新数据。本文将介绍如何使用MySQL和C#实现数据更新操作,同时提供相应的代码示例。 步骤一:安装MySQL C…

    2026年10月5日
    100
  • 如何隐藏电脑系统托盘图标

    如何隐藏电脑系统托盘图标如何隐藏电脑系统托盘图标如何隐藏电脑系统托盘图标如何隐藏电脑系统托盘图标

    如今,电脑已深入千家万户,成为人们工作和生活中必不可少的工具。为了更好地满足个人使用习惯,我们可以对电脑进行多种个性化设置,例如更换桌面壁纸、调整图标排列方式、创建常用程序快捷方式等。本文将介绍一个实用的小技巧:如何隐藏系统托盘中的图标,从而让任务栏界面更加整洁,提升整体操作体验。 1、 在桌面的空…

    2026年10月5日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信