C++ 常见集合算法

目录

🤔常见集合算法:

🙂1.set_intersection  容器交集

代码示例:

运行结果:

🙂2.set_union  容器并集

图解:

代码示例:

运行结果:

🙂 3.set_difference    容器差集

图解:

代码示例:

运行结果:

结束!


🤔常见集合算法:

🙂1.set_intersection  容器交集

 

set_intersection是STL中的一个算法函数,用于求两个已经有序的集合的交集,并将结果输出到一个目标容器中。set_intersection函数的声明方式如下:

template<class InputIt1, class InputIt2, class OutputIt>
OutputIt set_intersection(InputIt1 first1, InputIt1 last1,InputIt2 first2, InputIt2 last2,OutputIt d_first);
  • first1 和 last1:表示第一个有序集合的起始和结束迭代器
  • first2 和 last2:表示第二个有序集合的起始和结束迭代器
  • d_first:表示输出结果的容器的起始迭代器

📖函数返回值为输出结果容器的结束迭代器。

set_intersection函数会将两个集合的交集元素依据元素的大小关系依次复制到目标容器中,并返回目标容器的迭代器。

代码示例:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;void print(int val)
{cout << val << " ";
}int main()
{vector<int> d1 = { 10, 20, 30, 40,};vector<int> d2 = {  30, 40, 50, 60 };vector<int> d3(100); // 向量容量设为100auto iter = set_intersection(d1.begin(), d1.end(), d2.begin(), d2.end(), d3.begin());cout << "d1:  ";for_each(d1.begin(), d1.end(), print);cout << endl;cout << "d2:  ";for_each(d2.begin(), d2.end(), print);cout << endl;cout << "两个容器的交集为:";for_each(d3.begin(), iter, print); // 只输出交集部分cout << endl;return 0;
}

运行结果:

🙂2.set_union  容器并集

图解:

 

set_union是STL中的一个算法函数,用于求两个已经有序的集合的并集,并将结果输出到一个目标容器中。set_union函数的声明方式如下:

template<class InputIt1, class InputIt2, class OutputIt>
OutputIt set_union(InputIt1 first1, InputIt1 last1,InputIt2 first2, InputIt2 last2,OutputIt d_first);
  • first1 和 last1:表示第一个有序集合的起始和结束迭代器
  • first2 和 last2:表示第二个有序集合的起始和结束迭代器
  • d_first:表示输出结果的容器的起始迭代器

📖函数返回值为输出结果容器的结束迭代器。

set_union函数会将两个集合的所有元素依据元素的大小关系依次复制到目标容器中,并排除重复的元素,返回目标容器的迭代器。

代码示例:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;void print(int val)
{cout << val << " ";
}int main()
{vector<int> d1 = { 10, 20, 30, 40,};vector<int> d2 = {  10,30, 40, 50, 60 };vector<int> d3(100); // 向量容量设为100auto iter = set_union(d1.begin(), d1.end(), d2.begin(), d2.end(), d3.begin());cout << "d1:  ";for_each(d1.begin(), d1.end(), print);cout << endl;cout << "d2:  ";for_each(d2.begin(), d2.end(), print);cout << endl;cout << "两个容器的并集为:";for_each(d3.begin(), iter, print); // 只输出并集部分cout << endl;return 0;
}

运行结果:

🙂 3.set_difference    容器差集

在数学中,对于两个集合A和B,A与B的差集(也称为相对补集)指的是由所有属于A但不属于B的元素组成的集合,记作A-B。

例如,对于集合A={1,2,3,4,5}和集合B={4,5,6,7,8},则A与B的差集为{1,2,3}。

                B与A的差集所有属于B但不属于A的元素组成的集合{6,7,8},记作B-A。

在计算机科学中,集合的差集操作同样应用广泛,例如在关系型数据库设计中,可以使用集合的差集操作来实现多表之间的联接操作。在C++的STL中,set_difference是一个常见的集合算法,可用于计算两个有序容器的差集。

图解:

 set_difference是STL中的一个算法函数,用于求两个已经有序的集合的差集,并将结果输出到一个目标容器中。set_difference函数的声明方式如下:

template<class InputIt1, class InputIt2, class OutputIt>
OutputIt set_difference(InputIt1 first1, InputIt1 last1,InputIt2 first2, InputIt2 last2,OutputIt d_first);

 

参数说明:

  • first1 和 last1:表示第一个有序集合的起始和结束迭代器
  • first2 和 last2:表示第二个有序集合的起始和结束迭代器
  • d_first:表示输出结果的容器的起始迭代器

📖函数返回值为输出结果容器的结束迭代器。

set_difference函数会将属于第一个集合但不属于第二个集合的所有元素依据元素的大小关系依次复制到目标容器中,返回目标容器的迭代器。

代码示例:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;void print(int val)
{cout << val << " ";
}int main()
{vector<int> d1 = { 10, 20, 30, 40, };vector<int> d2 = { 10,30, 40, 50, 60 };vector<int> d3(100); // 向量容量设为100auto iter = set_difference(d1.begin(), d1.end(), d2.begin(), d2.end(), d3.begin());cout << "d1:  ";for_each(d1.begin(), d1.end(), print);cout << endl;cout << "d2:  ";for_each(d2.begin(), d2.end(), print);cout << endl;cout << "两个容器的差集为:";for_each(d3.begin(), iter, print); // 只输出差集部分cout << endl;return 0;
}

运行结果:

 

结束!

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

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

相关文章

价值5000元以上的某马大数据全套视频【强烈推荐】

某马大数据 01、阶段一 Python大数据开发基础 01、第一章大数据介绍及开发环境 02、第二章 linux命令 03、第三章 MySQL数据库 04、第四章 excel的使用 05、第五章 kettle的使用 06、第六章 数据分析及可视化 07、第七章 大数据框架与数仓基础 08、第八章 数仓实战项目 …

【流放之路-第三章】

来到萨恩城废墟 来到平民窟 来到火葬场 发个传送门打完回城交所有任务再到贫民窟 来到下水道口 来到黑石陵墓 跑完试炼回城 退出重进 第三章买&#xff1a;漩涡、第二章&#xff1a;精准破坏、第一章&#xff1a;效能、第二章&#xff1a;元素集中 一直往里…

【流放之路-第五章】

奴隶深坑 来到狱卒之塔去控制区 从控制区来到奥瑞亚广场 打完boss后进boss地图的地方会重新出现个传送门去化作火海的高庭。 来到广场遗迹去藏古堂 拿到道具传出回城&#xff0c;去 传送广场遗迹去 下两幅图 从广场遗迹去遗物圣所 从遗物圣所点传送门回城去刚才放的…

html5游戏卡顿掉线,流放之路卡顿怎么解决

流放之路卡顿解决办法有多个方案&#xff0c;1&#xff0c;虚拟内存设置&#xff0c;2.游戏内部画面设置&#xff0c;3&#xff0c;开启你电脑的卓越性能&#xff0c;4&#xff0c;英伟达设置(NVIDIA控制面板)&#xff0c;5&#xff0c;还有个流放之路泥人模式&#xff0c;要求…

可以测试流放之路伤害的软件,流放之路高智力装备打造推荐_4000+智力伤害测试_52pk...

流放之路高智力伤害有多高?流放之路最高智力上线有多少?快跟小编一起瞧一瞧吧。 1&#xff0c;40000智慧的配置&#xff0c;更肉&#xff0c;坦度更高&#xff0c;伤害更高。 另外&#xff0c;法术偷取其实在20000多的护盾下&#xff0c;没感觉到什么作用&#xff0c;在攻坚B…

【流放之路-第二章】

第二章有用技能石&#xff1a;召唤飞掠者&#xff08;光环&#xff09; 到了第二章不用搭理NPC直接去前哨原野 进入兽穴 打完boss点门进入前哨原野 去危机岔路 传送危机岔路 来到罪孽之殿 跑试炼、打boss、拿邪影宝石。 退出重进传送危机岔路 去堕道遗迹 沿着路一直…

流放之路一直显示与服务器连接,流放之路公开测试在线太多而引起服务器崩溃...

在流放之路公开测试时&#xff0c;因在线人员太多&#xff0c;导致了服务器的崩溃&#xff0c;而且人数都在逐渐增加&#xff0c;面临这一问题&#xff0c;游戏商正在想尽一切办法去修复&#xff0c;必须在要加以改进&#xff0c;全面整顿。在下次希望能再多人也不怕。游戏太好…

流放之路服务器连接中断,流放之路客户端崩溃报错怎么办

1、游戏版本问题&#xff0c;随着游戏版本的更新&#xff0c;旧版本有些软件就会和服务器不兼容等等&#xff0c;所以如果是版本太旧造成闪退&#xff0c;更新最新版即可。2、硬件问题&#xff0c;硬件可能还没达到玩一些游戏的配置&#xff0c;比如内存不足就很常见&#xff0…

python图像处理实战(二)—二值化图像与线性变换

&#x1f680;写在前面&#x1f680; &#x1f58a;个人主页&#xff1a;https://blog.csdn.net/m0_52051577?typeblog &#x1f381;欢迎各位大佬支持点赞收藏&#xff0c;三连必回&#xff01;&#xff01; &#x1f508;本人新开系列专栏—python图像处理 ❀愿每一个骤雨初…

【流放之路-poe的使用攻略】

打开国服市集 添加自己的poe 第一步&#xff1a;查看自己的名字 开打地址 第一步&#xff1a;查看自己的代码 F12 导入后就会出现自己的poe

【流放之路-第六章】

从狮眼守望到绝望岩滩杀boss回城去目光海滩 从目光海滩去海潮孤岛 从海潮孤岛拿任务道具后去目光海滩 从目光海滩去炙热盐沼 从炙热盐沼去卡鲁要塞 从卡鲁要塞去图克哈玛的要塞打boss去下图3到寂默山岭 从寂默山岭到禁灵之狱下层 从禁灵之狱下层到薛朗之塔 从薛朗之塔到…

可以测试流放之路伤害的软件,流放之路:游戏难点!你知道平均每秒伤害(DPS)怎么计算吗!...

近来有很多朋友在入坑POE一定时间后,都提出了关于DPS如何计算的问题。 这个问题,牵扯面比较多。所以不太好讲解,我在下述的叙述里,会穿插一些以往发过的科普贴,请结合起来一起看。 老实说这块儿是很难,不是真心想研究它,是很难看进去的。想研究,就请耐下心来一点点看。…

可以测试流放之路伤害的软件,测试平台及细节一览 - 《流放之路》国服硬件需求测试:低配也能续写ARPG传奇 - 超能网...

测试平台、场景说明 测试平台 测试平台配置主要分为两套,第一套配置为Skylake平台基础搭建的ASUS MAXIMUS VIII GEN(Z170)主板,处理器为Intel Core i7-6700K,内存是G.Skill Ripjaws V 4GB DDR4 3200x2组成的双通道;第二套配置为Kaveri平台(APU)基础搭建的MSI A88XM GAMING(…

卫士处刑者冠军css3边,流放之路决斗者冠军双持刀刃乱舞BD分享

关于决斗者的冠军升华&#xff0c;目前来说&#xff0c;是比较冷门的&#xff0c;流行的冠军BD也比较少见&#xff0c;主要是因为这个升华带来的永驻护体(全域20%减伤)虽然看似强大&#xff0c;却难以找到很好的配合效果&#xff0c;而且其他升华点也相对较弱&#xff0c;因此相…

可以测试流放之路伤害的软件,《流放之路》增伤机制介绍 伤害怎么计算

导 读 《流放之路》伤害怎么计算你清楚吗?在计算整体伤害的时候都要注意哪些细节呢?很家对此不是很清楚,接下来就跟随小编一起来了解下《流放之路》增伤机制介绍吧,感兴趣的小伙伴快来围观一下吧! 一、增伤的计... 《流放之路》伤害怎么计算你清楚吗?在计算整体伤害的时候…

流放之路+连接服务器+未响应,流放之路链接服务器中就未响应

流放之路链接服务器中就未响应 内容精选 换一换 使用configure命令配置构建。它定义了系统的各个方面&#xff0c;包括允许nginx用于连接处理的方法。最后&#xff0c;它会创建一个Makefile。该configure命令支持以下参数&#xff1a;--help打印帮助信息。--prefixpath定义将保…

流放之路服务器维护,流放之路专属私享服务器详细介绍

流放之路在周年赛季中暗黑之父将会为大家架设带有独特MOD的服务器&#xff0c;那么对于这条专属的私享服务器玩家们怎么参加呢&#xff1f;下面小编就为大家带来了详细的介绍&#xff0c;感兴趣的玩家一起来看看吧。 专属私享服务器介绍 在《流放之路》“至暗地心”周年赛季即将…

何时加索引,性别字段和逻辑删除字段应不应该加

首先哪些地方加索引&#xff08;按照sql执行顺序写&#xff09; 1、from表扫描连接处索引 2、where后条件去走索引 3、group by加索引 4、select查询不用加 5、order by排序加索引 &#xff08;对于第四点&#xff0c;覆盖索引&#xff1a;查询的字段都被索引覆盖&#xff0c;…

登录图形验证码验证

1.页面添加 一个验证码输入框 一个img标签用来存放验证码图 写一个imgCode()点击事件&#xff0c;用来刷新验证码 将获得的验证码放入redis缓存当中&#xff0c;登录的时候用来验证 验证图形验证码是否正确 代码如下: controller层: RequestMapping("toLogin")pu…

java实现图形验证码

项目中可能会用到图形验证码的功能&#xff0c;源码分享给大家。以下是实际效果图&#xff1a; 一、后端JAVA代码 1.生成图形验证码工具类 public class imgVerifyCode {private int weight 100; //验证码图片的长和宽private int height 40;private String te…