news 2026/5/1 4:56:02

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/4/28 12:23:53

智能文档处理系统快速上手指南

想要告别繁琐的手动文档整理工作吗&#xff1f;&#x1f680; 智能文档处理系统正是你需要的利器&#xff01;这款基于先进AI技术的工具能够自动解析各类文档格式&#xff0c;实现精准内容提取和批量处理&#xff0c;让文档管理变得轻松又高效。 【免费下载链接】GLM-4.5 GLM-4…

作者头像 李华
网站建设 2026/4/18 11:20:33

SlideSCI PowerPoint插件安装教程:告别繁琐的学术报告制作

SlideSCI PowerPoint插件安装教程&#xff1a;告别繁琐的学术报告制作 【免费下载链接】SlideSCI PPT plugin, supports one-click to add image titles, copy and paste positions, one-click image alignment, and one-click to insert Markdown (including bold, hyperlinks…

作者头像 李华
网站建设 2026/4/23 14:56:36

python训练营打卡DAY10

浙大疏锦行 知识点&#xff1a; 把之前所有的处理手段都处理一遍&#xff0c;回顾一下全流程&#xff0c;以后就用处理好的部分直接完成开始机器学习建模&#xff08;简单建模&#xff0c;不涉及调参&#xff09;和评估 一、数据的处理 1.1 导入所需要的包 1.2 查看数据信息…

作者头像 李华
网站建设 2026/5/1 4:41:54

Java 多线程机制

版本信息版本号&#xff1a;JDK 1.x 多线程增强版 发布日期&#xff1a;[具体日期] 适用范围&#xff1a;Java 后端开发、并发编程场景功能概述本次更新围绕 Java 多线程机制进行深度优化&#xff0c;聚焦线程安全、性能调优与资源管理三大核心方向&#xff0c;新增多种便捷编程…

作者头像 李华
网站建设 2026/4/18 5:30:16

50、Linux网络与Shell环境配置全解析

Linux网络与Shell环境配置全解析 1. Linux网络基础问题解析 在Linux系统中,网络配置是一项基础且重要的工作。下面我们通过一系列问题来深入了解Linux网络相关知识。 1.1 网络硬件支持类型 Linux支持多种类型的网络硬件,以下是一些常见的选项: - Token Ring :令牌环…

作者头像 李华
网站建设 2026/4/28 5:28:19

GP2040-CE游戏控制器固件终极指南:从零开始打造专属电竞装备

GP2040-CE是一款基于树莓派RP2040芯片的开源游戏控制器固件项目&#xff0c;专为Pico-PIO-USB板设计&#xff0c;支持多种游戏控制器协议。无论你是格斗游戏爱好者、DIY发烧友&#xff0c;还是想要打造个性化游戏装备的玩家&#xff0c;这个项目都能为你提供无限可能。&#x1…

作者头像 李华