STL——集合算法

算法简介:

  • set_intersection // 求两个容器的交集
  • set_union // 求两个容器的并集
  • set_difference // 求两个容器的差集

1.set_intersection

函数原型:

  • set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);——// 求两个集合的交集;注意:两个集合必须是有序序列;beg1 容器1开始迭代器;end1 容器1结束迭代器;beg2 容器2开始迭代器 ;end2 容器2结束迭代器 ;dest 目标容器开始迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//set_intersection——集合算法
void Print(int val)
{cout << val << " ";
}
void test()
{vector<int>v1;vector<int>v2;vector<int>vTarget;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i + 5);}vTarget.resize(min(v1.size(), v2.size()));vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, Print);cout << endl;
}
int main()
{test();system("pause");return 0;
}

 注:

  • 求交集的两个集合必须是有序序列
  • 目标容器开辟空间需要取两个容器的最小值
  • set_intersection返回值既是交集中最后一个元素的位置

2.set_union

函数原型:

  • set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);——// 求两个集合的并集;注意:两个集合必须是有序序列; beg1 容器1开始迭代器 ;end1 容器1结束迭代器; beg2 容器2开始迭代器; end2 容器2结束迭代器 ;dest 目标容器开始迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//set_union——集合算法
void Print(int val)
{cout << val << " ";
}
void test()
{vector<int>v1;vector<int>v2;vector<int>vTarget;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i + 5);}vTarget.resize(v1.size() + v2.size());vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, Print);cout << endl;
}
int main()
{test();system("pause");return 0;
}

 注:

  • 求并集的两个集合必须的有序序列
  • 目标容器开辟空间需要两个容器相加
  • set_union返回值既是并集中最后一个元素的位置

3.set_difference

函数原型:

  • set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);——// 求两个集合的差集; 注意:两个集合必须是有序序列;beg1 容器1开始迭代器 ;end1 容器1结束迭代器 ; beg2 容器2开始迭代器 ; end2 容器2结束迭代器 ;dest 目标容器开始迭代器
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
//set_difference——集合算法
void Print(int val)
{cout << val << " ";
}
void test()
{vector<int>v1;vector<int>v2;vector<int>vTarget;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i + 5);}vTarget.resize(max(v1.size(), v2.size()));//v1和v2的差集vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, Print);cout << endl;//v2和v1的差集vector<int>::iterator itEnd2 = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());for_each(vTarget.begin(), itEnd2, Print);cout << endl;
}
int main()
{test();system("pause");return 0;
}

 注:

  • 求差集的两个集合必须的有序序列
  • 目标容器开辟空间需要从两个容器取较大值
  • set_difference返回值既是差集中最后一个元素的位置

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

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

相关文章

【办公技巧】怎么批量提取文件名到excel

Excel是大家经常用来制作表格的文件&#xff0c;比如输入文件名&#xff0c;如果有大量文件需要输入&#xff0c;用张贴复制或者手动输入的方式还是很费时间的&#xff0c;今天和大家分享如何批量提取文件名。 打开需要提取文件名的文件夹&#xff0c;选中所有文件&#xff0c…

iptables 防火墙(二)

目录 1. SNAT 策略及应用 1.1 SNAT策略概述 1. 只开启路由转发&#xff0c;未设置地址转换的情况 2. 开启路由转发&#xff0c;并设置SNAT转换的情况 1.2 SNAT策略的应用 1. 2.1 共享固定IP上网 &#xff08;1&#xff09;打开网关的路由转发 &#xff08;2&#xff09;…

SQL进阶:视图的增删改

上一节我们学习了子查询,这一节我们来了解下视图。这俩货很像。 当子查询很复杂,用的地方又多,为了提高重用率,就可以创建为视图。当然了,视图还有其他用处。 视图的用途 简化查询,这个上面已经提到了。 保护数据,可以通过视图来开放给用户指定的列,来缩小访问权限…

MongoDB 概念介绍

1、MongoDB 应用场景 传统的关系型数据库&#xff0c;在数据操作的"三高"需求以及应对Web2.0的网站需求面前&#xff0c;显得力不从心。 High performance -对数据库高并发读写的需求。Huge Storage -对海量数据的高效率存储和访问的需求。High Scalability &&…

servlet总结

目录 1.生命周期 2.线程总结 3.配置 4.请求和响应 5.会话管理 6.过滤和监听器 7.处理表单数据 8.与JSP集成 9.异常处理 10.安全性和认证 Servlet是一种基于Java的Web组件&#xff0c;用于处理客户端请求并生成动态Web内容。以下是关于Servlet的一些总结 1.生命周期 …

Java核心知识点1-java和c++区别、隐式和显示类型转换

java和c区别 java通过虚拟机实现跨平台特性&#xff0c;但c依赖于特定的平台。java没有指针&#xff0c;它的引用可以理解为安全指针&#xff0c;而c和c一样具有指针。java支持自动垃圾回收&#xff0c;而c需要手动回收。java不支持多重继承&#xff0c;只能通过实现多个接口来…

【PHP】函数array_intersect、array_diff:从数组中取出、去除指定的几个键值

1.从数组中取出 &#xff1a;array_intersect 要从数组中取出指定的几个键值&#xff0c;可以使用 array_intersect_key 函数。以下是一个示例&#xff1a; $array [name > John,age > 30,email > johnexample.com,city > New York ];$keys [name, email];$resu…

C++进阶--二叉树进阶(二叉搜索树)

二叉树进阶&#xff08;二叉搜索树&#xff09; 一、二叉搜索树1.1 二叉搜索树的概念 二、二叉搜索树的结构2.1 结点结构2.2 树结构 三、二叉搜索树的操作&#xff08;非递归&#xff09;3.1 二叉搜索树的插入3.2 二叉搜索树的查找3.3 二叉搜索树的中序遍历3.4 二叉搜索树的删除…

c++学习笔记-提高篇-STL-函数对象

目录 一、函数对象 二、函数对象使用 三、谓词 1、概念 2、一元谓词 3、二元谓词 插入一条sort函数源码 四、内建函数对象 1.基本概念 2、算数仿函数 3、关系仿函数 4、逻辑仿函数 一、函数对象 函数对象概念 &#xff08;1&#xff09;重载函数调用操作符的类&a…

WPF+Halcon 培训项目实战(11):HS组件封装

文章目录 前言相关链接项目专栏运行环境匹配图片封装组件新增类库项目选择依赖顺序并添加Nuget修改原本矩形方法运行结果&#xff1a; 对矩形进行抽象封装抽象基类矩形抽象改造 圆形抽象封装代码运行结果 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在NEOAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过NEOAPI SDK设置相机固定…

react基础学习 附加todo实现代码

简介 学习目的 我们在学习GUI开发的时候一般思考两个问题 如何来设计UI?如何实现前后端数据交互? 问题一 React引入了tsx语法,让我们能够在ts中自由的嵌入html,让我们能只写tsx代码,来实现UI的控制,而不是把所有的UI都放进一个html文件中,让各个部分更好维护 所react中…

Kubernetes 中整合 Istio 的全面指南

大家好&#xff0c;我是升仔 Istio 在 Kubernetes 的关键应用场景 服务间通信的精细控制&#xff1a;Istio 提供路由规则、重试、故障转移和断路器等功能&#xff0c;用于控制和优化服务间的通信。安全性强化&#xff1a;提供了强大的服务间认证和授权功能&#xff0c;确保只…

harmonyOS Column组件通过space属性设置内部元素间距

例如 我们代码如下 import router from ohos.router Entry Component struct Index {build() {Row() {Column() {Text("年后")Text("一起")Text("旅游")}.width(100%)}.height(100%)} }运行之后 元素都粘连到一起 显然不太好看 我们就可以通过…

PM大逃亡

欢迎来到程序小院 PM大逃亡 玩法&#xff1a;点击白色的小鬼&#xff0c;滑动鼠标移动&#xff0c;不要碰到黑色的怪物&#xff0c; 怪物会越来越多&#xff0c;看看你能坚持多久&#xff0c;快去大逃亡吧^^。开始游戏https://www.ormcc.com/play/gameStart/233 html <div…

分享Python采集40个NET整站程序源码,总有一款适合您

分享Python采集40个NET整站程序源码&#xff0c;总有一款适合您 Python采集的40个NET整站程序源码下载链接&#xff1a;https://pan.baidu.com/s/1z54JHJkFYa4Kx2oBtPrn_w?pwd2ta4 提取码&#xff1a;2ta4 商品评论网站系统 小孔子内容管理系统XkCms V2.0 友间别墅整站程…

云卷云舒:数据库还能发展多少年

随着技术的发展&#xff0c;很多细分的技术领域随机消失&#xff0c;如磁带机、大/小型机等&#xff0c;数据库也能成为科技常青树吗&#xff1f; 我几个方面我来分析下&#xff1a; 1、数据库的形态变化了&#xff0c;但是并没有新一代取代旧一代&#xff0c;只是创新的一代…

【win10】解决重装系统后笔记本无法调节亮度的问题

问题描述 笔记本重装系统后发现之前的fn快捷键调节亮度的功能無了&#xff0c;检查过后发现n卡控制面板&#xff0c;电源选项这些能调节屏幕亮度的地方一个都不行。笔记本一直是最强亮度非常伤眼睛。 问题分析 重装系统后发生这种情况大概率是因为之前的显卡驱动没了&#…

【rar转zip】如何将rar文件轻松转换成zip

今天和大家分享三个rar压缩包改成zip格式的方法&#xff0c;希望能够帮助到大家&#xff01; 方法一&#xff1a; 直接修改rar压缩包的后缀名变为zip&#xff0c;就可以修改压缩包文件格式了 方法二&#xff1a; 先将rar压缩包解压出来&#xff0c;然后再将解压出的文件进行…

【MATLAB】BiGRU神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 BiGRU神经网络时序预测算法是一种基于双向门控循环单元&#xff08;GRU&#xff09;的多变量时间序列预测方法。该方法结合了双向模型和门控机制&#xff0c;旨在有效地捕捉时间序列数据中…