STL学习笔记14-集合算法(set_intersection,set_union,set_difference)

C++ STL有关集合set相加、相减、求交集的操作 求两个集合的和(并集)、差、交集 set库提供set容器,iterator库提供迭代器,algorithm库提供集合操作(故也可以对其他容器进行集合操作) #include <iostream> #include <set> #include <iterator> #include <algorithm> using namespace std... 阅读详情

15.6 常用集合算法

算法简介:

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

注意:两个集合必须是有序序列且为升序列

15.6.1 set_intersection 求两个容器的交集

功能描述: 求两个容器的交集

注意:两个集合必须是有序序列且为升序列

函数原型:

  • set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //求两个集合的交集

    • beg1 容器1开始迭代器
    • end1 容器1结束迭代器
    • beg2 容器2开始迭代器
    • end2 容器2结束迭代器
    • dest 目标容器开始迭代器

示例:

//交集
void test01() {
	vector<int> v1;
	vector<int> v2;
	for (int i = 0; i < 5; i++)
	{
		v1.push_back(i+8);
		v2.push_back(i+10);
	}
	cout << "v1:      ";
	for_each(v1.begin(), v1.end(), myPrint());
	cout << endl;
	cout << "v2:      ";
	for_each(v2.begin(), v2.end(), myPrint());
	cout << endl;

	
	vector<int> tagerV;
	//提前开辟空间,取两者中最小的一个容器大小
	tagerV.resize(min(v1.size(), v2.size()));
	//取交集
	vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), tagerV.begin());
	//打印输出交集
	cout << "交集:      ";
	for_each(tagerV.begin(), itEnd, myPrint());
	cout << endl;
}

15.6.2 set_union 求两个容器的并集

功能描述: 求两个集合的并集

注意:两个集合必须是有序序列且为升序列

函数原型:

  • set-union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest) //求两个集合的并集

    • beg1 容器1开始迭代器
    • end1 容器1结束迭代器
    • beg2 容器2开始迭代器
    • end2 容器2结束迭代器
    • dest 目标容器开始迭代器

示例:

//并集
void test02() {
	cout << "-------------------------------------" << endl;

	vector<int> v1;
	vector<int> v2;
	for (int i = 0; i < 5; i++)
	{
		v1.push_back(i + 8);
		v2.push_back(i + 10);
	}

	cout << "v1:      ";
	for_each(v1.begin(), v1.end(), myPrint());
	cout << endl;
	cout << "v2:      ";
	for_each(v2.begin(), v2.end(), myPrint());
	cout << endl;

	
	vector<int> tagerV;
	//提前开辟空间,取两者容器之和
	tagerV.resize(v1.size()+v2.size());
	//取并集
	vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), tagerV.begin());
	//打印输出并集
	cout << "并集:      ";
	for_each(tagerV.begin(), itEnd, myPrint());
	cout << endl;
}

15.6.3 set_difference 求两个容器的差集

功能描述: 求两个集合的差集

注意:两个集合必须是有序序列且为升序列

函数原型:

  • set-difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //求两个集合的差集(结果为容器1中容器2没有的)

    • beg1 容器1开始迭代器
    • end1 容器1结束迭代器
    • beg2 容器2开始迭代器
    • end2 容器2结束迭代器
    • dest 目标容器开始迭代器

示例:

//差集
void test03() {
	cout << "-------------------------------------" << endl;

	vector<int> v1;
	vector<int> v2;
	for (int i = 0; i < 5; i++)
	{
		v1.push_back(i + 8);
		v2.push_back(i + 10);
	}

	cout << "v1:      ";
	for_each(v1.begin(), v1.end(), myPrint());
	cout << endl;
	cout << "v2:      ";
	for_each(v2.begin(), v2.end(), myPrint());
	cout << endl;


	vector<int> tagerV;
	//提前开辟空间,取两者容器之中最大的一个
	tagerV.resize(max(v1.size(), v2.size()));
	//取差集
	vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), tagerV.begin());
	//打印输出差集
	cout << "差集:      ";
	for_each(tagerV.begin(), itEnd, myPrint());
	cout << endl;
}

15.6

STL中的set集合容器进行集合运算:并、交、差实例 集合容器的集合运算:并、交、差: #include "stdafx.h" #include #include #include //集合运算:并、交、差需要包含该头文件 using namespace std; structltstr {     bool operator()(const char* s1,const char* s2) const 阅读详情

相关推荐

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

set_intersection使用详解

set_intersection()作用是求两个集合的交集,其中有5个参数:firts1,last1,first2,last2,result。 他们都是迭代器。需要注意的是,所求的两个集合必须是排序之后的,不然运行时会出现错误。 例子:set_intersection(nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), inserter(re,re.begin())); ...

XiaoTong_zZZ的博客 7015

PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet算是在ModelNet40这种object-centric数据集上用deep-learning做配准最好入手的一篇文章了,整体架构涉及简洁明了,一句话描述就是简单粗暴,话不多说,直接上网络架构图: Work Flow: 首先对输入source (N×3N \times 3N×3)与template (M×3M \times 3M×3)进行PointNet操作,即MLP + max-pooling后,分别得到描述各自点云的维度为1024的global feature vector:Φ(PS).

dloading7的博客 1648

C++ STL(十七):常用集合算法(set_intersection、set_union、set_difference)

文章目录0 常用集合算法简介【set_intersection、set_union、set_difference】1 set_intersection【将两个容器的交集存储至新容器】2 set_union【将两个容器的并集存储至新容器】3 set_difference【将两个容器的差集存储至新容器】 0 常用集合算法简介【set_intersection、set_union、set_difference】 算法简介: set_intersection:将两个容器的交集存储至新容器。 set_union:

NewsomTech 3854

QT 面试题汇总

一、讲述Qt信号槽机制与优势与不足 优点:①类型安全。需要关联的信号槽的签名必须是等同的。即信号的参数类型和参数个数同接受该信号的槽的参数类型和参数个数相同。若信号和槽签名不一致,编译器会报错。 ②松散耦合。信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无需知道是那个对象的那个信号槽接收它发出的信号,它只需在适当的时间发送适当的信号即可,而不需要关心是否被接受和那个对象接受了。Qt就保证了适当的槽得到了调用,即使关联的对象在运行时被删除。程序也不会奔溃。 ...

编程菜鸟 4万+

Unity中Newtonsoft.Json的使用(一)

在Unity中下载Newtonsoft.Json,并进行序列化和反序列化

洛苍离的博客 1万+

C++ 学习之集合算法:set_intersection(交集)、set_union(并集)、set_difference(差集)

1、首先介绍一下相关概念 (1) 并集 对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。 记作:AUB 读作“A并B” 例:{ 3,5 }U{ 2,3,4,6 } = { 2,3,4,5,6 } (2) 交集 对于两个给定集合A、B,由属于A又属于B的所有元素构成的集合,叫做A和B的交集。 记作: A∩B 读作“A交B” 例: A = { 1,2,3,4,5 },B = { 3,4,5,6,8 },A∩B = { 3,4,5 } (3) 差集 假设有集合A和B

阿乐的博客 7952

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2648

set_intersection、set_union、set_difference学习总结

本博客中,我们将学习并总结常用的集合算法。算法简介: set_intersection //求2个容器的交集 set_union //求2个容器的并集 set_difference //求2个容器的差集 一、set_intersection(intersection是交集的意思,so这里是求2个容器的交集) 功能描述: 求两个集合(容器)的交集函数原型: set_intersection(iterator beg1,iterator end1,iterator beg2,...

weixin_44980842的博客 2017

spark3.x 写入hudi报错

【代码】spark3.x 写入hudi报错。

W2484980893的博客 1578

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

【C++】关于 std::set_intersection( ) 函数用法

C++ STL 提供求交集的函数 set_intersection( ) 、求集合差的函数set_difference( ) 和合并两个集合的函数 set_union( ) 。以set_intersection( ) 为例,分析两端程序并简单记录其用法: nums1:1,2,2,1 nums2:2,2 #include <algorithm> // set_inter...

Sim0Hayha的博客 3万+

Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息

哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。

u014481728的博客 1137

STL容器的并集(set_union)、交集(set_intersection)和差集(set_difference)函数的使用

集合的交集并集和差集并不是只能用于set对象,STL提供了支持这些操作的算法,它们是通用函数。然而所有set对象都自动满足使用这些算法的先决条件—容器必须先经过排序。 再三注意,使用这三个函数之前,容器必须先进行排序。 set_union() set_intersection() set_difference() 这三个函数的接口都相同,接受五个迭代器参数。前两个迭代器定义了第一个容器的区间,接下来两个迭代器定义了第二个容器的区间,最后一个迭代器是输出迭代器,指出将结果集合复制到什么位置。这几个函数的前四

DayDayUp 4453

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

每天一个关于STL的知识:集合(set)算法,你了解了吗 ?

集合算法是一组用于处理集合数据的强大工具,它们能够帮助我们取两个集合的部分数据、比较两个集合、合并两个集合等操作。通过学习集合算法,我们可以更好地理解和处理集合数据,掌握数据处理的核心技巧。本文将逐一介绍几个常用的集合算法,并解释它们的原理和用法。无论你是初学者还是有一定经验的开发者,相信本文都能为你提供有益的知识和启发,让你在STL的集合算法中更加游刃有余。让我们一起开始这段关于集合算法的学习之旅吧!

Lion_Long的博客 1288

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

关于C++中使用set_union、set_intersection、set_difference,set_symmetric_difference、merge的总结

STL set中有set_union(取两集合并集)、set_intersection(取两集合交集)、set_difference(取两集合差集)。 1、这几个函数的参数一样。 2、set_union(x1.begin(), x1.end(), x2.begin(), x2.end(), inserter(x, x.begin())),前两个参数是集合x1的头尾,再依次是集合x2的头尾,最后一...

amf12345的博客 1932

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++集合 STL集合 set集和--交集、并集、差集、对称差

STL库中有丰富的集合运算方法,我们可以使用它们快速完成交集、并集、差集、对称差集的运算。(转载请指明出于breaksoftware的csdn博客) 交集(intersection) 交集是集合运算中经常会用到的计算,其表达是两个集合共有的部分(图中红色区域) STL中有set_intersection方法可以实现该功能。它是C++17开始支持的方法,声明于<algorithm>中。其中一种形式是 template< class Executi...

xiaozhidian的博客 8624

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

stl常用集合算法

weixin_72867798的博客 2074

常用集合算法 set_intersection() set_union() set_difference()

>1.set_intersection() //将两个容器的交集放到目标容器中 >2.set_union() //将两个容器的并集放到目标容器中 >3.set_difference() //将两个容器的差集放到目标容器中

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 821

【C++提高编程-11】----C++ STL常用集合算法

在C++ STL(标准模板库)中,有几个常用的集合算法可以用来操作集合(如std::set或std::unordered_set)

一伦明悦的博客 1721

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

学无止境 1001

C++ STL标准库:算法<algorithm> merge() set_union() set_difference() set_intersection()

#include <iostream> #include <list> #include <set> #include <algorithm> #include <functional> using namespace std; void print(int& elem) { cout << elem << ", "; } void main() { int dim[] = { 1,2,3,4,5,6,7,

超级大洋葱的博客 649

【万字总结篇】C++STL常用算法详解(错等年系列)

目录STL常用算法常用遍历算法for_eachtransform常用查找算法findfind_ifadjacent_findbinary_findcountcount_if STL常用算法 C++STL中的内置算法主要在头文件<algorithm>、<functional>、<numeric>中 <algorithm>是所有STL头文件中最大的一个,也是包含算法最多,最常用的一个头文件,其中包含比较、交换、查找、遍历、复制、修改等算法 <numeric

qq_52324409的博客 1万+

C++ STL 集合算法 set_union、set_intersection、set_intersection

#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; void printV(vector<int> &vec) { for (vector<int>::iterator...

qq_33185566的博客 420

The SetStack Computer UVA - 12096 STL入门:set_union() set_intersection() set_difference

题目链接:https://cn.vjudge.net/problem/UVA-12096#author=0 题意: 有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个开始为空的栈并且支持以下操作。 1.PUSH:空集“{}”入栈。 2.DUP:把当前栈顶元素复制一份后在入栈。 3.UNION:出栈两个集合,然后把二者的并集入栈。 4.INTERSECT:出栈两个集合,然后把二者的交集入栈...

qq_43185391的博客 143

set 的set_union ,set_intersection 函数

set set 就是数学上的集合,每个元素最多只出现一次,自定义类型也可以 构造 set ,但同样必须定义 “ 小于 ” 运算符。 set 集合是c++ STL库中自带的一个容器,有以下特点: 其中的元素都是排好序的 其中没有重复的元素 常用的操作: begin() 返回set 容器的第一个元素的地址 end() 返回set 容器的最后一个元素地址 clear() 删除set 容器中...

qz的博客 656
上一篇: STL学习笔记13-算术生成算法(accumulate,fill)
下一篇: 局域网内MongoDB使用127.0.0.1地址可访问,使用其他地址无法访问的问题
SMH_壹壹贰
博客等级 码龄7年 17粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值