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

set关联式容器

作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在 中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是 中数元素的值不能直接被改变。与 的使用方法大致都相同。

set的定义

set<类型> 对象名; 如:set<int> s;

添加元素

set<int> s; s.insert(8); s.insert(10); s.insert(6); s.insert(8); //重复元素不会插入

set遍历

set 的遍历也是使用迭代器进行遍历, 可以正序遍历也可以反序遍历。

正序遍历

set<int> s; set<int>::iterator it; for (it = s.begin(); it != s.end(); it++) cout << *it << endl;

反序遍历

set<int>::reverse_iterator it; for (it = s.rbegin(); it != s.rend(); it++) cout << *it << endl

常用操作

begin(), //返回set容器的第一个元素 end(), //返回set容器的最后一个元素 clear(), //删除set容器中的所有的元素 empty(), //判断set容器是否为空 max_size(), //返回set容器可能包含的元素最大个数 size(), //返回当前set容器中的元素个数 rbegin(), //返回的值和end()相同 rend(), //返回的值和begin()相同 erase(iterator), //删除定位器iterator指向的值 erase(first,second), //删除定位器first和second之间的值 erase(key_value), //删除键值key_value的值 find() , //返回给定值值得定位器,如果没找到则返回end()。 set中还有两个非常重要的函数,lower_bound()和upper_bound()。这两个函数都需要传入一个值。 lower_bound返回的是大于或等于被查询元素的第一个元素位置的迭代器,如果找不到,迭代器则为set.end() 。 upper_bound返回值则是>给定val的最小指针(iterator)。 rbegin() 和 rend()为反向迭代器。

因为 set中的元素本身是有序的,因此 begin() 会直接返回集合中最小的元素的位置,而 end()-- 返回的是集合中最大元素的位置。

同排序函数相同,我们可以自行定义比较的方法,但具体使用同 sort 略有不同,需要自己定义一个 struct 来做具体类型的比较,同时要定义一个名为 operator 的 bool 类型函数,具体请看下面的代码。

#include <bits/stdc++.h> using namespace std; //自定义比较结构体 struct Cmp { bool operator()(int l, int r) { return l % 10 > r % 10; } }; int main() { set<int, Cmp> s; for(int i = 7; i < 27; i++) s.insert(i); set<int>::iterator it; for (it = s.begin(); it != s.end(); it++) cout << *it << endl; return 0; }
http://www.cnnetsun.cn/news/26863.html

相关文章:

  • 一键解锁阅读3.0书源终极合集:1629个精品资源任你选
  • 一般人不懂Windows
  • Java 基于多线程机制的专项实验
  • 51、Linux 系统中 shell 环境管理与脚本编写全解析
  • 53、编写高效 Shell 脚本:从基础到实践
  • 解锁共享单车数据:从入门到精通的完整分析指南
  • KOOM:如何快速解决Android应用内存泄漏的终极方案
  • API 测试- Postman Vs Rest Assured
  • 如何在React Native应用中实现语音交互?
  • 突破创意瓶颈:BlenderMCP如何用AI重塑3D建模工作流
  • 生产环境出现问题,测试人如何做工作复盘?
  • 测试工程师:这锅我不背,什么情况测试容易背锅以及化解妙招
  • Python自定义HTTP客户端:12306抢票项目的网络请求管理
  • 玩转SM16714PHT景观装饰驱动IC(1)
  • 云服务器的核心优势
  • 15. PPML - 隐私保护机器学习综述 - 《Towards Efficient Privacy-Preserving Machine Learning: A Systematic Review》
  • Qwen3-14B-AWQ:重新定义轻量化大模型效率标准
  • Linux环境下的C语言编程(三十九)
  • 毕业设计实战:基于SSM+MySQL的图书商城管理系统设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • 毕业设计实战:基于SSM+MySQL的问卷调查系统,避开这些坑轻松搞定毕设!
  • 非正弦反电动势下PMSM与BLDC无感控制算法研究:自适应谐波估计降低转矩脉动
  • 单相并网逆变器Matlab仿真:离网仿真与PLL锁相环研究,电感电流谐波含量THD优化仿真效果
  • Kate 高级文本编辑器 v26.03.70 官方中文版
  • yadm 完整使用指南:从入门到精通掌握点文件管理
  • 基于Web的大学生体测管理系统设计与实现中期(1)
  • 代码随想录算法训练营第四十三天 | 98. 所有可达路径
  • GBase 8a数据库集群硬件部署安装建议
  • GBase数据库护航国家管网SCADA系统四年无中断平稳运行
  • 一文搞定 AI 智能体架构设计的9大核心技术