news 2026/9/25 3:40:46

set关联式容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 7:07:33

高效配置yowsup项目的pre-commit代码质量检查实战指南

在即时通讯库yowsup的开发过程中&#xff0c;代码质量直接影响着项目的稳定性和可维护性。许多开发团队在协作时经常遇到代码风格不统一、格式混乱、低级错误频发等问题&#xff0c;这不仅增加了代码审查的负担&#xff0c;也降低了开发效率。本文将为您提供一套完整的pre-comm…

作者头像 李华
网站建设 2026/9/25 3:57:24

Bruce Web界面终极指南:远程控制渗透测试设备的完整解决方案

Bruce Web界面终极指南&#xff1a;远程控制渗透测试设备的完整解决方案 【免费下载链接】Bruce Firmware for m5stack Cardputer, StickC and ESP32 项目地址: https://gitcode.com/GitHub_Trending/bru/Bruce Bruce固件为M5Stack Cardputer、StickC和ESP32设备提供了强…

作者头像 李华
网站建设 2026/9/24 19:21:54

C语言之switch 语句

很多初学者认为 switch 只是 if-else 的另一种写法&#xff0c;但实际上它在底层实现&#xff08;跳转表&#xff09;和代码可读性上有独特的优势。以下是关于 switch 语句从基础语法到底层原理&#xff0c;再到实战陷阱的全方位指南。一、 switch 的核心语法结构switch 是一种…

作者头像 李华
网站建设 2026/9/24 19:21:50

66、深入解析 Linux 安全技术:用户账户与密码管理

深入解析 Linux 安全技术:用户账户与密码管理 1. Linux 备份工具概述 在 Linux 系统中,有多种备份工具可供选择,其中 cpio、dump/restore 和 tar 通常是预安装的。而 amanda 虽然默认未安装,但因其具有高度的灵活性,甚至能备份 Windows 系统,所以广受欢迎。若你想了解更…

作者头像 李华
网站建设 2026/9/24 19:21:47

46、深入理解Linux基础网络配置

深入理解Linux基础网络配置 1. 网络配置的重要性与目标 在当今数字化时代,大多数Linux系统都需要连接到网络,无论是作为客户端、服务器,还是两者兼具。即便是家用电脑和智能手机等专用设备,通常也会连接到互联网。因此,配置Linux的基本网络工具是全面配置Linux系统的必要…

作者头像 李华
网站建设 2026/9/24 19:21:42

Daily Report — Day 7(Beta)

2025-12-12 10:30:00✅ 昨日完成工作&#xff08;Day 6 落地成果&#xff09;测试体系深化&#xff1a;zc 完成 Jest TypeScript 异步测试支持配置&#xff0c;成功输出覆盖率报告&#xff1b;lzy 扩展推荐算法异常与边界场景测试用例&#xff0c;单测覆盖率提升至 70%&#x…

作者头像 李华