set操作

news/2025/11/30 19:45:48/文章来源:https://www.cnblogs.com/WTSRUVF/p/19290058

C++ set 容器基于红黑树实现,其核心操作的时间复杂度如下:

‌查找、插入、删除操作‌:平均和最坏情况均为 ‌O(log n)‌,其中 n 是集合中的元素数量。这种对数级性能得益于红黑树的自平衡特性。

‌遍历操作‌:时间复杂度为 ‌O(n)‌,需要访问每个元素

‌需要注意的点:‌

  1. ‌容器类型限制‌:array.begin() + 1这种写法要求容器支持随机访问迭代器,比如vectordeque或数组。如果是listset这类不支持随机访问的容器,这种写法会编译错误

函数功能示例
next(it) 获取下一个迭代器 next(numSet.begin())
prev(it) 获取上一个迭代器 prev(numSet.end())

主要删除方法:‌

🛠️ ‌删除指定值的元素‌

set<int> myset{1,2,3,4,5}; int num = myset.erase(2); // 删除值为2的元素

返回值num表示成功删除的元素个数(0或1)6。

🎯 ‌删除迭代器指向的元素‌

set<int>::iterator iter = myset.erase(myset.begin()); // 删除第一个元素

删除后,迭代器iter指向被删除元素的下一个位置6。

📋 ‌删除迭代器范围内的元素‌

set<int>::iterator iter2 = myset.erase(myset.begin(), --myset.end());

删除从开始到倒数第二个元素之间的所有元素6。

🧹 ‌清空整个集合‌

myset.clear(); // 删除所有元素

 

 

练习题目:220. 存在重复元素 III - 力扣(LeetCode)

class Solution {
public:bool containsNearbyAlmostDuplicate(vector<int>& nums, int indexDiff, int valueDiff) {int n = nums.size();if (indexDiff == n) indexDiff = n - 1;set<int> array;map<int, int> vis;for (int i = 0; i <= indexDiff; i++) {if (!vis[nums[i]]) {vis[nums[i]] = 1;array.insert(nums[i]);} else {vis[nums[i]]++;}}int INF = 0x7fffffff;int min_v = INF;auto pre_it = array.begin();if (vis[*pre_it] > 1) min_v = 0;for (auto it = std::next(array.begin()); it != array.end(); it++) {// cout << *it << endl;min_v = min(min_v, abs(*pre_it - *it));if (vis[*it] > 1) min_v = min(min_v, 0);pre_it = it;}if (min_v <= valueDiff) return true;int k = indexDiff + 1;for (int i = k; i < n; i++) {// 处理旧元素if (vis[nums[i - k]] <= 1) {array.erase(nums[i - k]);}vis[nums[i - k]]--;// 插入新元素if (!vis[nums[i]]) {vis[nums[i]] = 1;array.insert(nums[i]);auto it = array.find(nums[i]);auto next_it = std::next(it);if (it != array.begin()) {auto pre_it = std::prev(it);min_v = min(min_v, abs(*pre_it - *it));}if (next_it != array.end()) {cout << *next_it << endl;min_v = min(min_v, abs(*next_it - *it));}} else {min_v = min(min_v, 0);vis[nums[i]]++;}}return min_v <= valueDiff;}
};

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/982156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V Linux QEMU编译安装 qemu-system-riscv64 构建

RISC-V Linux QEMU编译安装 qemu-system-riscv64 构建 https://blog.csdn.net/flyfish1986/article/details/130004913 https://cloud.tencent.com/developer/article/1825739

2025 补水嫩肤 + 水润双效沐浴露排行榜 TOP10,梵玢成沐浴首选!

换季肌肤易干燥,想实现全身美白焕肤却顾虑重重:强力去角质怕伤屏障,温和款又担心角质代谢不畅,美白沐浴产品常伴随假滑,保湿型却难改善暗沉?关节黑、鸡皮顽固、干燥起皮、敏感泛红甚至皮肤松弛等问题,让 “丝滑…

云南旅游,旅行社怎么选?看这份五大品牌榜就够了,权威数据+正规资质+定制服务+旅客口碑推荐

云南以多元民族文化与瑰丽自然景观成为旅游热门地,但旅游市场中旅行社质量良莠不齐,隐性消费、行程缩水、服务断层等问题频发:低价团暗藏强制购物陷阱,承诺的非遗体验沦为走马观花,山区线路用车不合规存安全隐患。…

孩子近视了,OK镜怎么选?9款热门型号对比

OK镜(角膜塑形镜)作为一种有效的视力矫正方式,越来越受到家长和近视患者的关注。市面上品牌众多,如何选择一款适合的OK镜成为许多人的困惑。本文整理了9款热门OK镜的关键参数,从产地、中心厚度到设计类型,助你一…

python自动化测试:pytest(一).md

Python基础 测试常用库 好的!这些是 Python 自动化测试中最常用的文件操作库。我来为你详细讲解每个库的常用操作。一、JSON 文件操作 1. 读取 JSON 文件 import json# 方法1:读取文件 with open(data/users.json, r…

2025东华大学程序设计萌新挑战赛题解

目录Problem A. 数字变换Problem B. 月下梦城堡谜题Problem C. ACM自动机Problem D. 五彩斑斓的世界Problem E. 要开始了……吗?Problem F. 虚空输电Problem G. 结界的巫女-easyProblem H. 结界的巫女-hardProblem I.…

RustFS安全架构揭秘:其“内存安全”特性如何实现企业级数据可靠?

RustFS安全架构揭秘:其“内存安全”特性如何实现企业级数据可靠?2025年,当数据成为企业的核心资产,安全性成为存储系统选型的决定性因素。基于Rust语言构建的​RustFS​,凭借其编译期内存安全特性,实现了99.99% …

python自动化测试:pytest(二)

2. 参数化测试(数据驱动) Pytest 参数化与数据驱动测试详解 1. 基本参数化使用 @pytest.mark.parametrize 装饰器 import pytest# 基本参数化示例 @pytest.mark.parametrize("input, expected", [(1, 2),(…

2025年必备口语练习APP清单:AI助学、真人对练,总有一款适合你

想要提升英语口语,却苦于没有合适的练习对象和语言环境?这是许多英语学习者面临的共同难题。如今,借助科技手段,我们可以通过手机APP应用获得贴近真实的口语练习体验,让开口说英语不再是一件难事。 值得关注的口语…

详细介绍:2v1带您实战12nm高级数字后端

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

服务器常见操作

查看文件夹大小 du -sh your_dir_path 查看磁盘空间 df -h

CV论文速递: 覆盖医学影像分析、视频理解与生成、3D场景理解与定位等方向! (10.27-10.31) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成膜助剂出口厂商有哪些?销量比较好的成膜助剂厂家名单权威推荐:资质供应商与外贸公司名录

成膜助剂在涂料、胶粘剂等行业中占据重要地位,其品质优劣与供应稳定性对下游产品性能有着直接影响。随着市场需求不断攀升,国内一批拥有出口资质的成膜助剂生产厂商和贸易企业崭露头角。这些企业凭借先进技术与健全的…

过碳酸钠代理商有哪些?全球过碳酸钠供应商推荐:有出口资质的过碳酸钠供应商

在环保理念日益深入人心的当下,过碳酸钠作为一种兼具多重功能的环保型化工材料,被广泛应用于日化、印染、医疗、水处理等多个领域。市场上对 “国内生产过碳酸钠的厂家有哪些”“工业级碳酸钠生产厂家”“质量好的过…

过碳酸钠进口 CIF 价格 全球供应商及国内优质代理商名录:TOP榜单解析

过碳酸钠作为兼具漂白、消毒与环保特性的化工产品,广泛应用于洗涤、水处理等领域。市场对其代理商、国内优质供应商的需求日益增长,进口 CIF 价格也成为跨国采购关注的重点。本文将结合行业动态,聚焦国内过碳酸钠企…

哪家过碳酸钠供应商质量好?过碳酸钠质量好的厂家推荐:颗粒均匀的过碳酸钠厂家

过碳酸钠作为兼具漂白、杀菌、供氧等多重功能的环保型化工原料,已广泛应用于洗涤日化、污水处理、纸浆漂白等诸多领域。其产品质量直接决定终端应用效果,而含氧量与颗粒均匀度更是衡量品质的关键指标 —— 含氧量影响…

嗨~这是我的第一篇博客

嗨~这是我的第一篇博客首先非常感谢博客园平台能够提供这么一个友好的交流环境。 自我介绍一下……也没什么可以介绍的,反正本人就是SunboyTPB了。 本人在博客园想跟大家互相交流分享一下鸿蒙(HarmonyOS)软件开发的…

D-Hub智慧标书--智能应答体系:智能体时代,技术标就该“点对点”应答!

过去十年,中国的投标行业经历了两次“表面革新”: 第一阶段是模板化写标, 第二阶段是LLM生成式写标。 但这两次革新,都没解决一个核心问题: 能不能做到真正意义上的“技术点对点应答”?评委真正看重的,不是你写…

全弹性锂离子电池技术突破,可拉伸5000%

研究人员开发出完全可拉伸的锂离子电池,所有组件均具备弹性,包括可扩展5000%的电解质层。该电池在近70次充放电循环后仍保持电荷存储容量,为可穿戴健康监测设备等柔性电子设备提供新的电源解决方案。完全可拉伸的锂…

成膜助剂源头工厂在哪里?成模性好的成膜助剂厂家哪家好?TOP前10质量优厂家推荐清单

成膜助剂作为涂料、日化等行业的关键辅料,其质量稳定性与性能适配性直接影响下游产品品质,含氧量等核心指标更是衡量产品实用性的重要标准。国内成膜助剂产业经过多年发展,已形成较为成熟的生产体系,涌现出众多技术…