当前位置: 首页 > news >正文

C++STL容器之set

1.介绍

        set容器是C++标准模板库(STL)中的一个关联容器,用于存储唯一的元素。set中的元素是自动排序的,不允许重复。set通常基于红黑树(一种自平衡二叉查找树)实现,因此插入、删除和查找操作的时间复杂度都为O(log n)

2.set用法

        (1)定义和初始化

        set的定义和初始化可以通过以下方式完成:

                std::set<ElementType> mySet;

        例如,定义一个int类型的set:

std::set<int> mySet;//定义时初始化
std::set<int> mySet = {1, 2, 3, 4, 5};

        (2)插入元素

mySet.insert(6);
mySet.insert(7);

        (3)删除元素

mySet.erase(3);  // 删除值为 3 的元素

        (4)查找元素

auto it = mySet.find(2);
if (it != mySet.end()) {std::cout << "Found: " << *it << std::endl;
} else {std::cout << "Not found" << std::endl;
}

        (5)遍历元素

for (auto it = mySet.begin(); it != mySet.end(); ++it) {std::cout << *it << std::endl;
}for (const auto& element : mySet) {std::cout << element << std::endl;
}

        (7)其他常用操作

  • size():返回 set 中元素的数量。

  • empty():检查 set 是否为空。

  • clear():清空 set 中的所有元素。

  • count():返回 set 中特定元素的数量(对于 set,结果只能是 0 或 1)。

3.与unordered_set的区别

 特性setunordered_set
底层实现红黑树(平衡二叉搜索树)哈希表
元素顺序有序(默认升序)无序
查找时间复杂度O(log n)平均O(1),最坏O(n)
插入/删除时间复杂度O(log n)平均O(1),最坏O(n)
内存占用较低

较高(哈希表需要额外内存)

4.总结

       set 是一个非常有用的容器,适用于需要存储唯一元素并且需要快速查找、插入和删除操作的场景。由于它是有序的,因此在需要按顺序处理元素时也非常方便。

如有错误,敬请指正!!!

相关文章:

C++STL容器之set

1.介绍 set容器是C标准模板库&#xff08;STL&#xff09;中的一个关联容器&#xff0c;用于存储唯一的元素。set中的元素是自动排序的&#xff0c;不允许重复。set通常基于红黑树&#xff08;一种自平衡二叉查找树&#xff09;实现&#xff0c;因此插入、删除和查找操作的时间…...

《微软量子芯片:开启量子计算新纪元》:此文为AI自动生成

量子计算的神秘面纱 在科技飞速发展的今天,量子计算作为前沿领域,正逐渐走进大众的视野。它宛如一把神秘的钥匙,有望开启未来科技变革的大门,而微软量子芯片则是这把钥匙上一颗璀璨的明珠。 量子计算,简单来说,是一种遵循量子力学规律调控量子信息单元进行计算的新型计算…...

使用AI创建流程图和图表的 3 种简单方法

你可能已经尝试过使用 LLMs 生成图像&#xff0c;但你有没有想过用它们来创建 流程图和图表&#xff1f;这些可视化工具对于展示流程、工作流和系统架构至关重要。 通常&#xff0c;在在线工具上手动绘制图表可能会耗费大量时间。但你知道吗&#xff1f;你可以使用 LLMs 通过简…...

从波士顿动力到Figure AI:探寻人工智能驱动的机器人智能化

一、引言 1.1 研究背景与意义 在科技飞速发展的当下,机器人智能化已成为全球科技竞争的关键领域,深刻影响着人类社会的生产与生活方式。从工业制造到日常生活服务,从医疗保健到探索未知领域,机器人正逐步渗透进各个行业,展现出巨大的发展潜力与应用价值。其智能化水平的…...

算法——KMP算法(Knuth-Morris-Pratt算法)

KMP算法&#xff08;Knuth-Morris-Pratt算法&#xff09;是一种高效的字符串匹配算法&#xff0c;用于在主文本字符串中快速查找模式字符串的出现位置。其核心思想是通过预处理模式字符串&#xff0c;利用部分匹配信息&#xff08;即“失败函数”或“next数组”&#xff09;避免…...

一周学会Flask3 Python Web开发-flask3模块化blueprint配置

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们在项目开发的时候&#xff0c;多多少少会划分几个或者几十个业务模块&#xff0c;如果把这些模块的视图方法都写在app.py…...

Pytorch实现之统计全局信息的轻量级EGAN

简介 简介:模型在EGAN的基础上改进了一个降维的自注意力机制,并且设计了一个新颖的选择算子,使用轮盘赌来选择个体,如果他们的适配度满足fchild<VALUE,则被选中的个体将被丢弃。需要在进化的初始阶段尽快找到最佳个体,并在后续阶段保持种群的多样性。 论文题目:LGE…...

Java开发实习面试笔试题(含答案)

在广州一家中大公司面试&#xff08;BOSS标注是1000-9999人&#xff0c;薪资2-3k&#xff09;&#xff0c;招聘上写着Java开发&#xff0c;基本没有标注前端要求&#xff0c;但是到场知道是前后端分离人不分离。开始先让你做笔试&#xff08;12道问答4道SQL题&#xff09;&…...

《论模型驱动架构设计方法及其应用》审题技巧 - 系统架构设计师

软件测试工程师软考论文写作框架 一、考点概述 “模型驱动架构设计及其应用”这一论题&#xff0c;主要考察了考生对模型驱动架构设计&#xff08;MDA&#xff09;这一先进软件设计方法的理解与应用能力。论题涵盖了MDA的基本概念、核心要素、实施流程及在实际项目中的应用等…...

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令&#xff1a;本地上传到远端 rz 命令&#xff1a;用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令&#xff0c;它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口&#xff0c;方便用户从本…...

初学者如何设置以及使用富文本编辑器[eclipse版]

手把手教你设置富文本编辑器 参考来源&#xff1a;UEditor Docs 初学者按我的步骤来就可以啦 一、设置ueditor编辑器 1.提取文件[文章最底部有链接提取方式] 2.解压文件并放到自己项目中&#xff0c;在WebContent目录下&#xff1a; 3. 修改jar包位置路径 到--> 注意&a…...

在 Java 中解析 JSON 数据

例子解析以下JSON数据 {"code":0,"msg":"成功","data": [{ "host":"1068222.com", "port":"", "m_token":"490e20e70e7de5f21a24b14c12a393f6", "categ…...

Python爬虫实战:从零到一构建数据采集系统

文章目录 前言一、准备工作1.1 环境配置1.2 选择目标网站 二、爬虫实现步骤2.1 获取网页内容2.2 解析HTML2.3 数据保存 三、完整代码示例四、优化与扩展4.1 反爬应对策略4.2 动态页面处理4.3 数据可视化扩展 五、注意事项六、总结互动环节 前言 在大数据时代&#xff0c;数据采…...

SpringCloud系列教程:微服务的未来(二十五)-基于注解的声明队列交换机、消息转换器、业务改造

前言 在现代分布式系统中&#xff0c;消息队列是实现服务解耦和异步处理的关键组件。Spring框架提供了强大的支持&#xff0c;使得与消息队列&#xff08;如RabbitMQ、Kafka等&#xff09;的集成变得更加便捷和灵活。本文将深入探讨如何利用Spring的注解驱动方式来配置和管理队…...

Opengl常用缓冲对象功能介绍及使用示例(C++实现)

本文整理了常用的opengl缓冲区对象并安排了使用示例 名称英文全称作用简述顶点数组对象Vertex Array Object (VAO)管理 VBO 和 EBO 的配置&#xff0c;存储顶点属性设置&#xff0c;简化渲染流程&#xff0c;避免重复设置状态顶点缓冲区对象Vertex Buffer Object (VBO)存储顶点…...

docker独立部署milvus向量数据库

milvus镜像&#xff1a;国外封锁&#xff0c;国内源也不好用。基本上所有源都不能用 首先想到阿里云服务&#xff0c;但是阿里云国外服务器便宜的300~400呢。 基于成本考虑终于装上心心念念的milvus(*^▽^*) 安装 Milvus 安装 Milvus 独立版 wget https://raw.githubuserco…...

【JT/T 808协议】808 协议开发笔记 ② ( 终端注册 | 终端注册应答 | 字符编码转换网站 )

文章目录 一、消息头 数据1、消息头拼接2、消息 ID 字段3、消息体属性 字段4、终端手机号 字段5、终端流水号 字段 二、消息体 数据三、校验码计算四、最终计算结果五、终端注册应答1、分解终端应答数据2、终端应答 消息体 数据 六、字符编码转换网站 一、消息头 数据 1、消息头…...

github配置sshkey

使用命令生成sshkey ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 依此会要求输入以下信息&#xff0c;可以使用默认值 设置保存密钥的路径 设置SSH密钥密码&#xff08;备注&#xff1a;空内容表示不设置SSH密钥密码&#xff09; 再次确认SSH密钥密…...

Java数据结构第十二期:走进二叉树的奇妙世界(一)

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 目录 一、树型结构 1.1. 树的定义 1.2. 树的基本概念 1.3. 树的表示形式 二、二叉树 2.1. 概念 2.2. 两种特殊的二叉树 2.3. 二叉树的性质 2.4. 二叉树的存储 三、二叉树的基本操作 一、树型结构 1.…...

Web的增删改查

准备环境 1. 添加web 点击项目右键——>选择**添加框架**选择**web应用程序** 2.创建lib目录 在web应用程序的**WEB-INF目录下**创建lib目录添加jar包(5个)解压&#xff1a;右键——>选择**添加库** 3.创建Dao层 在src目录下创建包com.zmq在该包下创建dao层添加工具…...

Proteus8仿真51单片机:手把手教你用IIC驱动24C02C EEPROM(附完整工程文件)

Proteus8仿真51单片机&#xff1a;从零构建IIC驱动24C02C EEPROM的完整指南 第一次接触51单片机的IIC通信时&#xff0c;我盯着示波器上那些高低电平的波形看了整整一个下午。作为嵌入式开发中最常用的通信协议之一&#xff0c;IIC以其简洁的两线制&#xff08;SCL时钟线和SDA数…...

几个知乎上的精彩回答

点击标题下「蓝色微信名」可快速关注技术社群的这篇文章《新来的同事满嘴高并发&#xff0c;但增删改查都还要技术指导&#xff0c;怎么办&#xff1f;》从知乎上节选了几个令人遐想的精彩回答&#xff0c;可能我们会碰到&#xff0c;可能我们有这种经历&#xff0c;重要的是能…...

2026 年 NAB 展:影石 Insta360 新品亮相,多系列产品升级创作体验

影石新品首秀&#xff1a;呈现专业创作者下一代产品布局2026 年 4 月 19 日&#xff0c;影石 Insta360 在美国广播电视展&#xff08;NAB 2026&#xff09;展出全系列影像产品。其中&#xff0c;Luna 系列手持云台相机和 Mic Pro 旗舰无线麦克风全球首次公开展出&#xff0c;全…...

3个理由告诉你为什么Easy-Scraper是网页数据提取的最佳选择

3个理由告诉你为什么Easy-Scraper是网页数据提取的最佳选择 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 还在为网页抓取而烦恼吗&#xff1f;每次页面结构变化都要重写复杂的CSS选择器&#xff1f;…...

从 .NET 8 到 .NET 9 RC:C# 14 AOT 对 Dify 客户端的 ABI 兼容性断层已确认——3 类 runtime panic 场景、2 种 patch 方案、1 小时热修复指南

第一章&#xff1a;C# 14 原生 AOT 部署 Dify 客户端 安全性最佳方案C# 14 原生 AOT&#xff08;Ahead-of-Time&#xff09;编译能力显著提升了 .NET 应用的启动性能与攻击面收敛能力&#xff0c;结合 Dify 的 RESTful API 设计&#xff0c;可构建零依赖、无 JIT、内存隔离的客…...

5个高级技巧完全指南:专业级AMD Ryzen系统调试与优化实战手册

5个高级技巧完全指南&#xff1a;专业级AMD Ryzen系统调试与优化实战手册 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…...

从‘Hello World’到区块链:手把手用Python代码演示SHA哈希的十大实战应用

从‘Hello World’到区块链&#xff1a;手把手用Python代码演示SHA哈希的十大实战应用 哈希函数就像数字世界的指纹采集器——它能将任意长度的数据压缩成固定长度的唯一标识。想象一下&#xff0c;你只需要对比两个文件的指纹就能判断它们是否完全相同&#xff0c;而无需逐字节…...

MyBatis SQL日志打印不出来?手把手教你排查Log4j2配置文件路径与优先级问题

MyBatis SQL日志打印失效&#xff1f;全方位排查Log4j2配置疑难杂症 刚接手一个遗留项目&#xff0c;明明在pom.xml里引入了log4j2依赖&#xff0c;MyBatis的SQL日志却像人间蒸发了一样。这场景是不是很熟悉&#xff1f;别急着怀疑人生&#xff0c;今天我们就用"刑侦思维&…...

EF Core 10向量搜索上线72小时后必须做的6项健康检查:从ANN精度衰减预警到HNSW图分裂检测(含Prometheus+Grafana监控模板)

第一章&#xff1a;EF Core 10向量搜索扩展的生产就绪性定义生产就绪性并非仅指功能可用&#xff0c;而是涵盖稳定性、可观测性、可维护性、安全边界与性能可预测性五个核心维度。EF Core 10 向量搜索扩展&#xff08;Microsoft.EntityFrameworkCore.VectorSearch&#xff09;虽…...

告别手写报告!手把手教你用LIS系统搞定医院检验科全流程条码管理(附实战避坑点)

告别手写报告&#xff01;手把手教你用LIS系统搞定医院检验科全流程条码管理&#xff08;附实战避坑点&#xff09; 在三级医院检验科工作多年的张主任最近终于松了一口气——自从上线LIS系统的全流程条码管理功能后&#xff0c;科室的标本差错率从每月15例骤降到2例以内。这个…...