news 2026/8/24 3:33:22

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/8/24 12:51:04

立即获取!专业级Times New Roman字体下载完整指南 [特殊字符]

立即获取&#xff01;专业级Times New Roman字体下载完整指南 &#x1f3af; 【免费下载链接】TimesNewRoman字体文件下载 Times New Roman 字体文件下载 项目地址: https://gitcode.com/open-source-toolkit/74370 还在为文档排版烦恼吗&#xff1f;想要让您的报告、论…

作者头像 李华
网站建设 2026/8/23 13:34:12

在别人的故事里活成自己——演员的自我修养与沉浸式表演浅说

演员的自我修养&#xff1a;社会工程学技术的研究领域&#xff01;成功的伪装者&#xff0c;一定是成功的演员&#xff01;本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01;​一、从一个生活场景聊起你有没有这样的经历&#xff1a;看电影时&#xff0c;某个角色…

作者头像 李华
网站建设 2026/8/23 20:03:55

AI测试、大模型测试(八)SpringAI核心技术

目录 一、SpringAI特点 二、SpringAI核心技术 2.1 ChatModel(与其他大模型交互接口) 2.2 ChatClient(与大模型交互 维护上下文) 2.3 Prompt Templates(提示词模板) 2.4 ChatOptions接口 2.5 Message 2.6 流式对话 2.7 文生图 2.8 文本转语音、语音转文本 2.9 多模态…

作者头像 李华
网站建设 2026/8/24 13:50:48

基于Java Swing的连连看小游戏(1)

1、项目介绍 本项目是基于Java Swing开发的经典连连看小游戏&#xff0c;兼容JDK8及以上版本。游戏采用图形化界面设计&#xff0c;结合了经典连连看的核心玩法与现代化的交互体验&#xff0c;实现了步数统计、计时、胜利/失败反馈、死局检测、洗牌等功能&#xff0c;兼具娱乐…

作者头像 李华
网站建设 2026/8/24 8:21:46

springboot基于vue的大学生课程满意度评价系统的设计与实现_eli7wrjo

目录已开发项目效果实现截图开发技术系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/8/24 13:49:59

springboot基于vue的大学生身心健康辅助管理系统_3w2c01xp

目录已开发项目效果实现截图开发技术系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华