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()用法:原来并集和交集这样求!相关推荐

  1. java链表并集_求链表的并集和交集

    给定2个链表,求这2个链表的并集(链表)和交集(链表).不要求并集(链表)和交集(链表)中的元素有序. 如,输入: List1: 10->15->4->20 List2: 8-> ...

  2. 用c 语言实现数组的并集,C ++程序查找两个未排序数组的并集和交集

    在本文中,我们将讨论一个程序来查找两个给定的未排序数组的并集和交集. 让我们用" A"和" B"表示两个数组.然后这些数组的并集用A∪B表示,它基本上是两个给定 ...

  3. 【温故知新】CSS学习笔记(并集和交集选择器)

    并集和交集选择器 这一节我们介绍另外两个"复合选择器",并集选择器和交集选择器. 复习一下上一讲的"子代选择器",看下面的例子,要求将"上级菜单&qu ...

  4. set_union()和set_intersection()的用法

    set_union()是set集合中的一个函数,他是用来取集合的并集.该函数括号内有5个参数,分别: 第一个集合的头和尾 第二个集合的头和尾 最后一个参数,一般情况为inserter(C1, C1.b ...

  5. 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 ...

  6. set并集和交集宏定义typedef

    审核还没通过就更新: ) 把set_difference()这家伙给忘掉了 已补充 <---------------–> 看紫书P116, 发现这里的代码出现了几个没看过的函数, 百度了一 ...

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

    C++的STL为我们提供了集合的操作方法. STL库中有丰富的集合运算方法,我们可以使用它们快速完成交集.并集.差集.对称差集的运算. 交集(intersection) 交集是集合运算中经常会用到的计 ...

  8. STL之set_union、set_intersection、set_difference、set_symmetric_difference

    需要的头文件: algorithm 源码: //源码比较复杂,不予列出 //有兴趣的可以参考sgi stl的源码 作用: 计算两个集合的并集.交集.差集.对称差集. 通过二元仿函数我们可以取代 ope ...

  9. 两个链表求交集_实现两个排序链表的并集和交集

    两个链表求交集 In computer science, a linked list is a linear collection of data elements, whose order is n ...

  10. leetcode 986 、56 ——区间问题(数组区间的并集和交集)

    前缀和技巧 区间问题 1.区间的交集 1.1.题目 1.2.思路 1.3.题解 2.区间的并集 2.1.题目 2.2.思路 2.3.题解 区间问题 1.区间的交集 1.1.题目 原题链接 给定两个由一 ...

最新文章

  1. 数组与字符串三(Cocos2d-x 3.x _Array容器)
  2. QT的QColorDialog类的使用
  3. 【Unity】Planar Shadows平面阴影的实现
  4. C# 向Main函数传递参数(程序启动时传递参数)
  5. ABP入门系列(10)——扩展AbpSession
  6. php数组去重复数据的小例子
  7. swing JTable学习(七)—TableModelListener
  8. 仿真软件有哪些测试,仿真怎么去仿?测试怎么去测?虽然是问答篇,干货也不少,不要错过了!...
  9. Hybird开发之webview
  10. 关于网页视频下载方法及工具
  11. 怎样把计算机添加到网络打印机,怎么将电脑打印机设置成连接网络打印机
  12. 三门问题与神奇的贝叶斯大脑
  13. IOS 安卓双平台视频APP推荐-VIP
  14. 网易跨域实现笔记以及顺便发现的XSS
  15. 官宣!清华副校长薛其坤将任南方科技大学校长
  16. 前端如何在H5页面调起微信支付
  17. HTML语言中表格的书写中TD TR TH的英文全称
  18. homeassistant中usb摄像头的使用(usb转web摄像头)
  19. Machine.config 文件中节点machineKey的强随机生成
  20. 【MySQL体系结构】MySQL8.0物理文件结构

热门文章

  1. Unity的包体压缩以及音效优化
  2. char **p作为参数被修改_opencv第1课-加载、修改、保存图像
  3. 多表查询过滤重复数据_数据分析工具SQL—多表查询
  4. android surfaceview , videoview 背景加圆角
  5. linux 中文 bterm fbterm 内核,Fbterm (简体中文)
  6. python入门教程基础语法_python入门教程13-02 (python语法入门之库相关操作)
  7. [转自华尔街的强帖]怎样才能嫁给有钱人
  8. Markdown插入代码
  9. “独立博客”为什么独立?
  10. 我们不知道我们不知道:用同化项目做网络安全