第九层(16):STL终章——常用集合算法

news2024/11/28 10:35:31

文章目录

  • 前情回顾
  • 常用集合算法
    • set_intersection
    • set_union
    • set_difference
  • 最后一座石碑倒下,爬塔结束
  • 一点废话

🎉welcome🎉
✒️博主介绍:一名大一的智能制造专业学生,在学习C/C++的路上会越走越远,后面不定期更新有关C/C++语法,数据结构,算法,Linux,ue5使用,制作游戏的心得,和大家一起共同成长。
✈️C++专栏:C++爬塔日记
😘博客制作不易,👍点赞+⭐收藏+➕关注

前情回顾

在上一块石碑中,我学到了,同时下一块石碑也显露出来…

  • 🚄上章地址:第九章(15):STL之常用算术生成算法

常用集合算法

  • 常用集合算法是用于得出两个容器的交集并集和差集的,有三个:
set_intersection//求两个容器的交集
set_union//求两个容器的并集
set_difference//求两个容器的差集

set_intersection

  • 求两个容器的交集,交集就是两个元素重复的部分,它会返回的是一个迭代器,就是存放这个交集的容器中的最后一个元素的迭代器,对于存放交集的容器时需要去提前开辟好空间的,最特殊的情况就是一个容器是另一个容器的子集,那对于存放交集的容器最大空间就是两个容器中小的那个,可以利用min函数来判断谁大谁小
min(size1,size2);
  • 使用min需要引头文件:algorithm
set_intersection(beg1,end1,beg2,end2,dest);
  • beg1是容器1的开始迭代器,end1是容器1的结束迭代器,beg2是容器2的开始迭代器,end2是容器2的结束迭代器,dest是目标容器的开始迭代器

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(min(a.size(), b.size()));
	cout << "a和b的交集是:";
	for (auto d = a_b.begin(); d < set_intersection(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

set_union

  • 求两个容器的并集,就是两个容器内所有元素集合在一起,但是重复元素只有一份,没有多份,所有对于并集,最特殊的情况就是两个容器内部没有重复元素,那需要给并集容器开辟的空间就是两个容器加起来
set_union(beg1,end1,beg2,end2,dest);
  • beg1是容器1的开始迭代器,end1是容器1的结束迭代器,beg2是容器2的开始迭代器,end2是容器2的结束迭代器,dest是目标容器的开始迭代器

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(a.size()+b.size());
	cout << "a和b的并集是:";
	for (auto d = a_b.begin(); d < set_union(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

set_difference

  • 两个容器的差集,差集的意思是,容器1中有,容器2中没有,对于差集而言,最特殊的情况为,两者之间没有共同元素,那差集就是较大的元素个数就是大容器的大小,可以用max得出,用于与min相同
set_difference(beg1,end1,beg2,end2,dest);

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(max(a.size(), b.size()));
	cout << "a和b的差集集是:";
	for (auto d = a_b.begin(); d < set_difference(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

在这里插入图片描述

最后一座石碑倒下,爬塔结束

  • “轰”,面前的石碑轰然倒下了,露出了一片广袤的天地,和一方莲台,莲台上坐着的是一位老者,老者浑身都透露出来自C++的强大波动,在石碑中感受不到的力量,那个老者看到我露出了笑容:“我就知道你可以来到这里,孩子,这座塔只是告诉你怎么去使用的,像熟练的使用C++的力量,还需要你坚持不懈的去熟悉他,使用它,加油吧,未来的路还很长,我期待你未来的成长…"

一点废话

  • hi,相信看文章的各位小伙伴对我已经不是很陌生了,这是我第一个真正意义上付出心血的专栏文章,虽然对于后面对STL进行介绍讲解的时候文章的质量并不是很好,我只是将使用描述了出来,并没有进行深度的剖析,对于这点我深表歉意,虽然但是,对于前面面向对象的内容我还是很有自信的,虽然介绍还是很浅薄,但是希望可以对于正在阅读文章的你有所帮助,C++爬塔日记这个专栏正式结束,下一个专栏我会为大家带来一个会进行长期更新的专栏——单片机的专栏,并且算法专栏也会在不久之后和大家见面了,浅浅期待一下吧!最后的最后,谢谢各位读者能看到这里,万分感谢!

🚀专栏:C++爬塔日记
🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉

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

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

相关文章

JY-7A/3DK/220 19-130V静态【电压继电器】

系列型号 JY-7A/1DK不带辅助电源电压继电器&#xff1b;JY-7B/1DK不带辅助电源电压继电器&#xff1b; JY-7/1DK/120不带辅助电源电压继电器&#xff1b;JY-7/1DK/120不带辅助电源电压继电器&#xff1b; JY-7A/1DKQ不带辅助电源电压继电器&#xff1b;JY-7B/1DKQ不带辅助电源…

Python入门之ChatGPT的API调用(Python版)

一、Python环境部署 参考Python 环境搭建 | 菜鸟教程 Python官网&#xff1a;Welcome to Python.org Python文档下载地址&#xff1a;Our Documentation | Python.org 二、Thonny的安装 安装包地址&#xff1a;Thonny, Python IDE for beginners 三、ChatGPT的Key申请 网…

虚拟机安装CentOS 7(带界面)

目录 一、虚拟机安装CentOS 7&#xff08;带界面&#xff09; 1、打开下好的VMware&#xff0c;点击创建虚拟机 2、下一步 3、点击下一步 4、选择Linux&#xff0c;ContOS7&#xff0c;点击下一步 5、修改虚拟机名称和路径 6、下一步 7、点击自定义硬件 8、设置虚拟机大…

《第一行代码》 第三章:UI布局开发

一&#xff0c;常用控件的使用方法 1&#xff0c;TextView <TextViewandroid:id"id/text_view"android:layout_width"match_parent"android:layout_height"wrap_content"android:gravity"center"android:textSize"24sp"…

iptables防火墙SNAT和DNAT

iptables防火墙SNAT和DNAT一、SNAT原理和应用1、SNAT原理2、SNAT应用环境3、SNAT转换前提条件二、SNAT案列1、实验需求2、实验环境3、实验目的三、DNAT原理和应用1、DNAT原理2、DNAT 应用环境3、DNAT转换的前提条件四、DNAT案列总结一、SNAT原理和应用 1、SNAT原理 SNAT原理:…

365天深度学习训练营 第P6周:好莱坞明星识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 内部限免文章&#xff08;版权归 K同学啊 所有&#xff09;&#x1f366; 参考文章地址&#xff1a; &#x1f517;第P6周&#xff1a;好莱坞明星识别 | 365天深度学习训练营&#x1f356; 作者&#xff1a;K同学啊 | 接…

扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码

文章目录1. 去噪扩散概率模型2. 前向扩散3. 反向采样3. 图像条件扩散模型4. 可以考虑改进的点5. 实现代码1. 去噪扩散概率模型 扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪…

如何为自己的应用选择数据库?有这些考虑因素

节选翻译自 Michal Toiba 的博客 微软前不久宣布推出分布式关系数据库 Azure Cosmos DB for PostgreSQL&#xff0c;使 Azure 成为第一个在单一数据库服务中同时支持关系和 NoSQL&#xff08;非关系&#xff09;数据的云平台。这意味着 Azure Cosmos DB 开发者在构建云原生应用…

只需三步,完成ChatGPT微信机器人搭建

大家好&#xff0c;我是可乐。 这两天 Chatgpt 又爆火了&#xff0c;去年12月份刚出来的时候&#xff0c;我写了两篇文章&#xff1a; ①、如何注册Chatgpt&#xff1f; ②、如何将 chatgpt接入微信&#xff1f; 然后沉寂了一个月&#xff0c;没想现在到又火了。本篇文章我…

计算机组成与体系结构 性能设计 William Stallings 第2章 性能问题

2.1 优化性能设计例如&#xff0c;当前需要微处理器强大功能的桌面应用程序包括&#xff1a;图像处理、三维渲染、语音识别、视频会议、多媒体创作、文件的声音和视频注释、仿真建模从计算机组成与体系结构的角度来看&#xff0c;一方面&#xff0c;现代计算机的基本组成与50多…

强大的ChatGpt为企业营销推广提供了全方位的加持

chatgpt&#xff0c;一个火出圈的“聊天机器人”。从写作文&#xff0c;到写代码&#xff0c;似乎没有什么是它干不了的。 ChatGpt在工业中的应用场景有哪些? 在工业领域&#xff0c;它可以用于提高生产效率&#xff0c;缩短生产周期&#xff0c;并帮助工人解决生产过程中的问…

优先级队列(PriorityQueue 和 Top-K问题)

一、PriorityQueue java中提供了两种优先级队列&#xff1a;PriorityQueue 和 PriorityBlockingQueue。其中 PriorityQueue 是线程不安全的&#xff0c;PriorityBolckingQueue 是线程安全的。 PriorityQueue 使用的是堆&#xff0c;且默认情况下是小堆——每次获取到的元素都是…

LeetCode刷题------字符串

LeetCode&#xff1a;344.反转字符串 定义两个指针&#xff08;也可以说是索引下标&#xff09;&#xff0c;一个从字符串前面&#xff0c;一个从字符串后面&#xff0c;两个指针同时向中间移动&#xff0c;并交换元素。 var reverseString function(s) {let l -1, r s.len…

Windows下LuaBridge2.8的环境配置及简单应用

Windows下LuaBridge2.8的环境配置及简单应用 LuaBridge2.8下载链接&#xff1a; https://github.com/vinniefalco/LuaBridge/tags 关于Lua的环境配置可参考以下链接&#xff08;这里不做简述&#xff09;&#xff1a; https://ufgnix0802.blog.csdn.net/article/details/125341…

什么是抗压能力?抗压能力的重要性及提高方法

在现实生活中每个人都面临着或大或小的压力。不论是学习还是工作&#xff0c;没有压力就没有进步和提升&#xff0c;压力可以转化为动力&#xff0c;而扛不住压力那就会导致躺平的结果。在职业的道路上&#xff0c;压力一直都存在&#xff0c;尤其是站在企业人力资源管理的角度…

开学季,关于校园防诈骗宣传,如何组织一场微信线上答题考试

开学季&#xff0c;关于校园防诈骗宣传&#xff0c;如何组织一场微信线上答题考试如何组织一场微信线上答题考试在线考试是一种非常节约成本的考试方式&#xff0c;考生通过微信扫码即可参加培训考试&#xff0c;不受时间、空间的限制&#xff0c;近几年越来越受企事业单位以及…

Navicat远程连接mysql教程及Navicat报错10061解决办法

文章目录想要远程连接的前提是数据库要配置密码&#xff0c;配置密码参考如下进入要连接的数据库看一下原有的配置&#xff0c;host 和 user修改配置授权root用户进行远程登录配置修改完成后&#xff0c;打开navicat&#xff0c;新建连接点击测试链接&#xff0c;显示连接后点击…

10个自动化测试框架,测试工程师用起来

软件行业正迈向自主、快速、高效的未来。为了跟上这个高速前进的生态系统的步伐&#xff0c;必须加快应用程序的交付时间&#xff0c;但不能以牺牲质量为代价。快速实现质量是必要的&#xff0c;因此质量保证得到了很多关注。为了满足卓越的质量和更快的上市时间的需求&#xf…

ThinkPad笔记本如何拆卸及安装电池

注意:外置电池可以自行拆卸&#xff0c;内置电池如需拆卸建议联系服务商&#xff0c;由工程师协助操作。 外置电池的拆卸方法&#xff1a; 方式一.部分机型只有一个锁扣&#xff0c;将锁扣移动到解锁状态&#xff0c;然后将电池向机身外侧抽出&#xff08;以T420为例&#xf…

用Qt开发的ffmpeg流媒体播放器,支持截图、录像,支持音视频播放,支持本地文件播放、网络流播放

前言 本工程qt用的版本是5.8-32位&#xff0c;ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流&#xff0c;实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput&#xff0c;视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本…