set(集合),multiset容器及pair队组的创建

news2024/9/22 3:44:38

1.set的基本概念:所有元素再插入时自动按升序排序,set/multiset属于关联式容器,底层结构是用二叉树实现的

set与multiset区别:

set中不允许容器中有重复的元素

multiset允许容器中有重复的元素

2.set的构造函数

 3.set的大小和交换

4.set的插入和删除操作

 5.set的查找和统计

void test01()
{
	set<int> s;
	s.insert(10);
	s.insert(40);
	s.insert(20);
	s.insert(50);
	s.insert(20);
	s.insert(20);
	set<int>::iterator it=s.find(200);//find的返回值是迭代器,没找到返回s.end()
	if (it != s.end())
	{
		cout << "找到元素" << *it << endl;
	}
	else
	{
		cout << "没找到元素" << endl;
	}
	int num = s.count(20);//对于set而言没有重复元素,只返回0和1
	cout << num << endl;
}

 6.set不能插入重复元素multiset能插入重复元素的原因

set插入数据的同时会返回插入结果,表示插入成功

multiset不会检测数据,因此可以插入重复数据

set.insert的底层代码:返回值是pair对组类型

multiset.insert的底层代码:返回值是迭代器

 7.pair队组的创建

 第一个元素first,第二个元素second

void test01()
{
	pair<string, int> p1("张三", 16);
	cout << "姓名:" << p1.first << " 年龄:" << p1.second << endl;
	pair<string, int> p2 = make_pair("李四", 15);
	cout << "姓名:" << p2.first << " 年龄:" << p2.second << endl;
}

8.set容器的排序(利用仿函数可以改变排序规则)

set存放内置数据类型排序

class mycompare
{
public://仿函数
	bool  operator()(int v1, int v2)const//这里要加const
	{
		return v1 > v2;//降序
	}
};
void test01()
{
	set<int> s1;
	s1.insert(20);
	s1.insert(50);
	s1.insert(30);
	s1.insert(10);
	s1.insert(40);
	for (set<int>::iterator it = s1.begin(); it != s1.end(); it++)//默认升序打印
	{
		cout << *it << " ";
	}
	cout << endl;
	set<int,mycompare> s2;//指定排序规则,两个参数都是数据类型//利用类里的仿函数可以指定排序规则
	s2.insert(20);
	s2.insert(50);
	s2.insert(30);
	s2.insert(10);
	s2.insert(40);
	for (set<int,mycompare>::iterator it = s2.begin(); it != s2.end(); it++)//降序打印
	{
		cout << *it << " ";
	}
}

set存放自定义数据类型排序

自定义类型都会指定排序规则

class Person
{
public:
	Person(string name,int age)
	{
		this->m_name = name;
		this->m_age = age;
	}
	string m_name;
	int m_age;
};
class mycompare
{
public:
	bool  operator()(const Person &p1,const Person &p2)const//这里要加const
	{
		return p1.m_age>p2.m_age;//降序
	}
};
void test01()
{
	set<Person,mycompare> s1;
	Person p1("张三", 16);//如果年龄相同还要制定另一套规则
	Person p2("李四", 18);
	Person p3("王五", 15);
	Person p4("赵六", 14);
	s1.insert(p1);
	s1.insert(p2);
	s1.insert(p3);
	s1.insert(p4);
	for (set<Person,mycompare>::iterator it = s1.begin(); it != s1.end(); it++)//对于自定义数据类型,指定排序规则打印
	{
		cout << "姓名:" << it->m_name << " 年龄:" << it->m_age << endl;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1940117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】进程间通信之-- 共享内存与信号量的介绍(下)

前言 上一篇&#xff0c;我们由进程间通信&#xff0c;引入并讲述了管道、匿名管道和命名管道&#xff0c;本节&#xff0c;将继续学习进程间通信的另一种方式之&#xff0c;共享内存。还要学习几个系统调用接口&#xff0c;并演示两个进程通过共享内存来进行通信。。。 目录 1…

数据结构——队列(链式结构)

一、队列链式结构定义 队列的链式存储结构是一种用链表实现的队列,它不像顺序存储结构那样需要预先分配固定大小的空间。链式存储结构的队列由节点组成,每个节点包括数据和指向下一个节点的指针。队列的链式存储结构可以动态地分配内存,更灵活地处理数据。在链式存储结构中…

【07】LLaMA-Factory微调大模型——微调模型导出与微调参数分析

上文介绍了如何对微调后的模型进行使用与简单评估。本文将介绍对微调后的模型进行导出的过程。 一、llama-3微调后的模型导出 首先进入虚拟环境&#xff0c;打开LLaMA-Factory的webui页面 conda activate GLM cd LLaMA-Factory llamafactory-cli webui 之后&#xff0c;选择…

SQL39道常见题型

SQL1 查询所有列 现在运营想要查看用户信息表中所有的数据&#xff0c;请你取出相应结果。 select * from user_profile 结果&#xff1a; SQL2 查询多列 还是上面那个输入&#xff0c;题目换成&#xff1a;现在运营同学想要用户的设备id对应的性别、年龄和学校的数据&#…

TIM基本定时器

TIM基本定时器 文章目录 TIM基本定时器1.定时器的分类2.定时器运行流程3.基本定时器的配置流程4.中断配置 1.定时器的分类 以STM32F1系列为例&#xff0c;它的定时器可以根据其特性和功能被分为三大类&#xff1a; 基本定时器&#xff1a; 包括&#xff1a;TIM6和TIM7。特点&a…

数据结构全部知识-----第一 关于数据结构的介绍

数据结构是计算机存储、组织数据的方式。它是计算机科学中的一个重要概念&#xff0c;主要目的是使数据的存储和访问更高效、更方便。常见的数据结构包括&#xff1a; 线性结构&#xff1a; 1. **数组&#xff08;Array&#xff09;** &#xff1a;一种基础的数据结构&#xf…

【BUG】已解决:AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘

AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘ 目录 AttributeError: ‘WindowsPath‘ object has no attribute ‘rstrip‘ 【常见模块错误】 【错误原因】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

C++中的多路转接技术之epoll

epoll 是干什么的&#xff1f;举个简单的例子 epoll的相关系统调用**epoll_create**和epoll_create1区别 epoll_ctl参数解释 **epoll_wait**参数说明返回值 epoll的使用 **epoll**工作原理epoll的优点(和 **select** 的缺点对应)epoll工作方式**水平触发**Level Triggered 工作…

针对汽车应用而设计的SCT4026D、SCT4062K、SCT3105K、SCT3080A、SCT3060A全新系列碳化硅 (SiC) MOSFET

全新系列碳化硅 (SiC) MOSFET SCT4026DWAHRTL SCT4062KWAHRTL SCT3105KRC15 SCT3080ALHRC11 SCT3080ARC15 SCT3060ARC15 ——明佳达 AEC-Q101 SiC功率MOSFETs是汽车和开关电源的理想选择。SiC功率MOSFETs可以提高开关频率&#xff0c;减少所需的电容、电抗器和其他元件的体积…

react开发-配置开发时候@指向SRC目录

这里写目录标题 配置开发时候指向SRC目录VScode编辑器给出提示总体1.配置react的 2.配置Vscode的1.配置react的2,配置VSCode的提示支持 配置开发时候指向SRC目录VScode编辑器给出提示 总体1.配置react的 2.配置Vscode的 1.配置react的 1. 我么需要下载一个webpack的插件 这样…

【闲谈】我的创作纪念日(CrowdStrike、无人驾驶)

感谢地心引力 &#xff0c;有幸再次遇见你&#xff1a; 还记得 2020 年 07 月 22 日吗&#xff1f;你撰写了第 1 篇技术博客&#xff1a;《遗传算法实例解析》在这平凡的一天&#xff0c;你赋予了它不平凡的意义。也许是立志成为一名专业 IT 作者、也许是记录一段刚实践的经验。…

【iOS】——探究isKindOfClass和isMemberOfClass底层实现

isKindOfClass 判断该对象是否为传入的类或其子类的实例 // 类方法实现&#xff0c;用于检查一个类是否属于另一个类或其父类链上的任何类。(BOOL)isKindOfClass:(Class)cls {// 从当前类开始&#xff0c;tcls将沿着元类的继承链向上遍历。for (Class tcls self->ISA(); …

MySQL:库表操作

MySQL&#xff1a;库表操作 库操作查看创建字符编码集 删除修改备份 表操作创建查看删除修改 库操作 查看 查看存在哪些数据库&#xff1a; show databases;示例&#xff1a; 查看自己当前处于哪一个数据库&#xff1a; select database();示例&#xff1a; 此处由于我不处于任…

Unity UGUI 之 Input Field

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.Input Field是什么&#xff1f; 给玩家提供输入的输入框 2.重要参数 中英文对照着看…

JSONNode树形解析或流式解析

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 什么是JSONNode&#xff1f; JSONNode是一个用于处理JSON数据的数据结构&#xff0c;它提供了一种简单、灵活、高效的方式来操作JSON数据。JSONNode可以看作是一个树形结构&#xff0c;其中每个节点都可以包含一个值…

MongoDB自学笔记(四)

一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现

文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反&#xff0c;黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间&#xff1f; 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…

vscode 文件颜色变绿色

解决&#xff1a;关闭git功能 在设置中搜索Git:Enabled&#xff0c;取消Decorations: Enabled的勾选

内网渗透隧道构建,使用github项目联动msf绕uac,使用简单的spp来进行操作icmp隧道

在我们需要木马上线的时候&#xff0c;发现上线不了&#xff0c;我们一般就想到建立隧道&#xff0c;来解决问题&#xff0c;或者是说我们直接还一种连接的操作来进行上线。比如说我们正向连接上不了&#xff0c;我们可以还成反向连接的操作。或者我们使用隧道直接硬刚waf来进行…

计算机毕业设计-程序论文文档-基于SSM的驾校管理系统

本系统开发采用技术为JSP、Bootstrap、Ajax、SSM、Java、Tomcat、Maven 此文章为本人亲自指导加编写&#xff0c;禁止任何人抄袭以及各类盈利性传播&#xff0c; 相关的代码部署论文ppt代码讲解答辩指导文件都有可私要 项目源码&#xff0c;请关注❥点赞收藏并私信博主&#x…