news 2026/6/10 16:44:31

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/6/10 1:00:39

RaceControl终极指南:告别F1TV官方客户端的所有痛点

RaceControl终极指南&#xff1a;告别F1TV官方客户端的所有痛点 【免费下载链接】RaceControl Race Control is a standalone, open source F1TV client for Windows, written in C# on the .NET platform. 项目地址: https://gitcode.com/gh_mirrors/ra/RaceControl 还…

作者头像 李华
网站建设 2026/6/10 14:09:15

从碎片化日志到全景洞察:ZincObserve跨数据源关联查询实战指南

在当今复杂的云原生环境中&#xff0c;系统产生的日志数据如同散落在沙滩上的贝壳&#xff0c;看似零散却蕴含着宝贵的业务洞察。传统的日志分析工具往往只能提供单维度的查询能力&#xff0c;难以将不同来源的数据关联起来形成完整的业务视图。ZincObserve作为新一代可观测性平…

作者头像 李华
网站建设 2026/6/10 12:29:57

【深度好文】大模型微调技术详解:从原理到实践(建议收藏)

文章系统介绍了大模型微调技术的发展历程、核心价值及主流技术方案。从AI发展的四个阶段演进到大语言模型&#xff0c;详细分析了大模型需要微调的原因&#xff08;预训练成本高、提示工程局限等&#xff09;&#xff0c;并重点解析了PEFT技术路线&#xff0c;包括Prompt Tunin…

作者头像 李华
网站建设 2026/6/9 23:32:22

55、用 SQL 管理数据

用 SQL 管理数据 1. 挑选 SQL 包 SQL 是一种用于访问数据的语言,而特定的 SQL 包则实现了这门语言。这类似于网络协议(如 SMTP)和实现该协议的服务器(如 sendmail、Postfix 和 Exim)之间的关系。理论上,你可以使用任何 SQL 包来满足 SQL 数据库需求,但实际上,使用 SQ…

作者头像 李华
网站建设 2026/6/9 23:40:53

我把公司开发后台的效率提高了10倍,就因为用了Appsmith。

前端快被CRUD写吐了&#xff1f;我用这个开源神器&#xff0c;10分钟拖拽出一个后台 作为一名前端开发&#xff0c;我最痛苦的时刻&#xff0c;莫过于产品经理跑过来说&#xff1a;“嘿&#xff0c;这里需要一个简单的后台管理页面&#xff0c;就是对数据库做个增删改查&#…

作者头像 李华
网站建设 2026/6/9 20:56:38

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

1、演示视频 基于Java Swing的连连看小游戏2、项目截图 设计说明 3.1 整体架构设计 本项目采用单一主类LinkGame继承JFrame作为程序入口&#xff0c;内部包含多个私有方法和内部类&#xff0c;遵循“单一职责原则”将功能模块拆分&#xff1a; 界面初始化模块&#xff1a;in…

作者头像 李华