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

set操作

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.jsqmd.com/news/56298/

相关文章:

  • RISC-V Linux QEMU编译安装 qemu-system-riscv64 构建
  • 2025 补水嫩肤 + 水润双效沐浴露排行榜 TOP10,梵玢成沐浴首选!
  • 云南旅游,旅行社怎么选?看这份五大品牌榜就够了,权威数据+正规资质+定制服务+旅客口碑推荐
  • 孩子近视了,OK镜怎么选?9款热门型号对比
  • python自动化测试:pytest(一).md
  • 2025东华大学程序设计萌新挑战赛题解
  • python自动化测试:pytest(二)
  • 2025年必备口语练习APP清单:AI助学、真人对练,总有一款适合你
  • 详细介绍:2v1带您实战12nm高级数字后端
  • 服务器常见操作
  • CV论文速递: 覆盖医学影像分析、视频理解与生成、3D场景理解与定位等方向! (10.27-10.31) - 指南
  • 成膜助剂出口厂商有哪些?销量比较好的成膜助剂厂家名单权威推荐:资质供应商与外贸公司名录
  • 过碳酸钠代理商有哪些?全球过碳酸钠供应商推荐:有出口资质的过碳酸钠供应商
  • 过碳酸钠进口 CIF 价格 全球供应商及国内优质代理商名录:TOP榜单解析
  • D-Hub智慧标书--智能应答体系:智能体时代,技术标就该“点对点”应答!
  • 全弹性锂离子电池技术突破,可拉伸5000%
  • 成膜助剂源头工厂在哪里?成模性好的成膜助剂厂家哪家好?TOP前10质量优厂家推荐清单
  • HTTP/2协议漏洞解析:通过HEADERS帧填充实现拒绝服务攻击
  • 哪家过碳酸钠供应商产品质量好?欧盟标准过碳酸钠厂家:销量与质量双优品牌推荐
  • 成膜助剂生产厂家哪家好?高端成膜助剂直销厂家名录TOP榜单前十权威名单,技术领先企业汇总
  • 实用指南:JWT 全面解析与 Spring Boot 实战教程
  • 百度亮相 SREcon25:搜索稳定背后的秘密,微服务雪崩故障防范 - 指南
  • Attention is all you need论文学习
  • 从数据采集到智能诊断:阿尔泰科技实时高精度远距离管道状态监测全流程 - 教程
  • 2D3DICL-I2PReg论文学习
  • Spring使用el表达式
  • 《程序员修建之道:从小工到专家》阅读笔记2
  • 《程序员修建之道:从小工到专家》阅读笔记3
  • AipexBase怎么用?AI 原生BaaS平台一句话做后端开发 - 实践
  • 完整教程:Elasticsearch:分布式搜索引擎数据库