set_union()和set_intersection()用法:原来并集和交集这样求!
set_union()和set_intersection()是STL内置的集合操作
set_union()
1.将两个int[](必须有序)合并到一个vector<int>中,结果自动去重
#include <iostream>
#include <vector>
using namespace std;
int main()
{ios::sync_with_stdio(false);//加速cin,和coutint a[5]={1,2,3,4,5};int b[5]={4,5,6,7,8};vector<int> c(10);//一定要指定大小,否则会无法运行vector<int>::iterator it;it=set_union(a,a+5,b,b+5,c.begin());//set_union返回地址cout<<it-c.begin()<<endl;for(it=c.begin();it!=c.end();it++)cout<<*it<<" ";return 0;
}
输出:
8//合并后的元素个数
1 2 3 4 5 6 7 8 0 0
2.将两个set<int>合并成一个set<int>且去重
inserter(c,c.begin())为插入迭代器
此函数接受第二个参数,这个参数必须是一个指向给定容器的迭代器。元素将被插入到给定迭代器所表示的元素之前。
#include <iostream>
#include <set>
using namespace std;
int main()
{ios::sync_with_stdio(false);set<int> a,b,c;set<int>::iterator it;a.insert(1);a.insert(4);a.insert(3);b.insert(6);b.insert(3);set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin()));
//最后一个参数不可用c.begin(),否则会无法运行,也不可令it=set_union(。。。)cout<<"c中元素个数:"<<c.size()<<endl;for(it=c.begin();it!=c.end();it++)cout<<*it<<" ";return 0;
}
输出:
c中元素个数:4
1 3 4 6
3.两个vector<int>合并成一个vector<int>
back_inserter
:创建一个使用push_back的迭代器
#include <iostream>
#include <vector>
using namespace std;
int main()
{ios::sync_with_stdio(false);vector<int> a,b,c;vector<int>::iterator it;a.push_back(1);a.push_back(3);a.push_back(4);b.push_back(3);b.push_back(4);b.push_back(4);b.push_back(3);set_union(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));cout<<"c中元素个数:"<<c.size()<<endl;for(it=c.begin();it!=c.end();it++)cout<<*it<<" ";return 0;
}
输出:
c中元素个数:5
1 3 4 4 3
输出结果预想的并不一样,也没有去重,具体原因目前还不是很清楚,所以这种方法知道就可以,一般也不怎么用得到。
set_intersection()
对第2个代码中的set_union()换成set_intersection()
#include <iostream>
#include <set>
using namespace std;
int main()
{ios::sync_with_stdio(false);set<int> a,b,c;set<int>::iterator it;a.insert(1);a.insert(4);a.insert(3);b.insert(6);b.insert(3);set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin()));
//最后一个参数不可用c.begin(),否则会无法运行,也不可令it=set_union(。。。)cout<<"c中元素个数:"<<c.size()<<endl;for(it=c.begin();it!=c.end();it++)cout<<*it<<" ";return 0;
}
输出:
c中元素个数:1
3
输出结果显而易见,有如下总结:
对于set<int>a,b,c;
1.set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(c,c.begin())用来求两个集合的并集(去重)
2.set_intersection(5个参数同上),求两个集合的交集
set_union()和set_intersection()用法:原来并集和交集这样求!相关推荐
- java链表并集_求链表的并集和交集
给定2个链表,求这2个链表的并集(链表)和交集(链表).不要求并集(链表)和交集(链表)中的元素有序. 如,输入: List1: 10->15->4->20 List2: 8-> ...
- 用c 语言实现数组的并集,C ++程序查找两个未排序数组的并集和交集
在本文中,我们将讨论一个程序来查找两个给定的未排序数组的并集和交集. 让我们用" A"和" B"表示两个数组.然后这些数组的并集用A∪B表示,它基本上是两个给定 ...
- 【温故知新】CSS学习笔记(并集和交集选择器)
并集和交集选择器 这一节我们介绍另外两个"复合选择器",并集选择器和交集选择器. 复习一下上一讲的"子代选择器",看下面的例子,要求将"上级菜单&qu ...
- set_union()和set_intersection()的用法
set_union()是set集合中的一个函数,他是用来取集合的并集.该函数括号内有5个参数,分别: 第一个集合的头和尾 第二个集合的头和尾 最后一个参数,一般情况为inserter(C1, C1.b ...
- oracle minus用法(求并集和交集)
表A{1,2,3,4,5,} 表B{4,5,6,7,8,} select * from A minus select * from B: 结果:1,2,3. select * from B minus ...
- set并集和交集宏定义typedef
审核还没通过就更新: ) 把set_difference()这家伙给忘掉了 已补充 <---------------–> 看紫书P116, 发现这里的代码出现了几个没看过的函数, 百度了一 ...
- C++集合 STL集合 set集和--交集、并集、差集、对称差
C++的STL为我们提供了集合的操作方法. STL库中有丰富的集合运算方法,我们可以使用它们快速完成交集.并集.差集.对称差集的运算. 交集(intersection) 交集是集合运算中经常会用到的计 ...
- STL之set_union、set_intersection、set_difference、set_symmetric_difference
需要的头文件: algorithm 源码: //源码比较复杂,不予列出 //有兴趣的可以参考sgi stl的源码 作用: 计算两个集合的并集.交集.差集.对称差集. 通过二元仿函数我们可以取代 ope ...
- 两个链表求交集_实现两个排序链表的并集和交集
两个链表求交集 In computer science, a linked list is a linear collection of data elements, whose order is n ...
- leetcode 986 、56 ——区间问题(数组区间的并集和交集)
前缀和技巧 区间问题 1.区间的交集 1.1.题目 1.2.思路 1.3.题解 2.区间的并集 2.1.题目 2.2.思路 2.3.题解 区间问题 1.区间的交集 1.1.题目 原题链接 给定两个由一 ...
最新文章
- 数组与字符串三(Cocos2d-x 3.x _Array容器)
- QT的QColorDialog类的使用
- 【Unity】Planar Shadows平面阴影的实现
- C# 向Main函数传递参数(程序启动时传递参数)
- ABP入门系列(10)——扩展AbpSession
- php数组去重复数据的小例子
- swing JTable学习(七)—TableModelListener
- 仿真软件有哪些测试,仿真怎么去仿?测试怎么去测?虽然是问答篇,干货也不少,不要错过了!...
- Hybird开发之webview
- 关于网页视频下载方法及工具
- 怎样把计算机添加到网络打印机,怎么将电脑打印机设置成连接网络打印机
- 三门问题与神奇的贝叶斯大脑
- IOS 安卓双平台视频APP推荐-VIP
- 网易跨域实现笔记以及顺便发现的XSS
- 官宣!清华副校长薛其坤将任南方科技大学校长
- 前端如何在H5页面调起微信支付
- HTML语言中表格的书写中TD TR TH的英文全称
- homeassistant中usb摄像头的使用(usb转web摄像头)
- Machine.config 文件中节点machineKey的强随机生成
- 【MySQL体系结构】MySQL8.0物理文件结构
热门文章
- Unity的包体压缩以及音效优化
- char **p作为参数被修改_opencv第1课-加载、修改、保存图像
- 多表查询过滤重复数据_数据分析工具SQL—多表查询
- android surfaceview , videoview 背景加圆角
- linux 中文 bterm fbterm 内核,Fbterm (简体中文)
- python入门教程基础语法_python入门教程13-02 (python语法入门之库相关操作)
- [转自华尔街的强帖]怎样才能嫁给有钱人
- Markdown插入代码
- “独立博客”为什么独立?
- 我们不知道我们不知道:用同化项目做网络安全