C++ //常用集合算法 //set_intersection //求俩个容器的交集 //set_union //求两个容器的并集 //set_difference //求两个容器的差集
1 //常用集合算法
2 //set_intersection //求俩个容器的交集
3 //set_union //求两个容器的并集
4 //set_difference //求两个容器的差集
5
6 #include<iostream>
7 #include<vector>
8 #include<algorithm>
9 using namespace std;
10
11
12 void myprint(int v)
13 {
14 cout << v << " ";
15 }
16 //set_intersection //求俩个容器的交集 (必须是有序序列)
17 void test01()
18 {
19 vector<int>v1;
20 vector<int>v2;
21
22
23 for (int i = 0; i < 10; i++)
24 {
25 v1.push_back(i); //0 -9
26 v2.push_back(i + 5); //5-14
27 }
28
29 vector<int>vTarget;
30 //目标容器需要提前开辟空间.
31 //最特殊的情况 大容器包含小容器 开辟空间 取小容器的size
32 vTarget.resize(min(v1.size(), v2.size()));
33
34 //获取交际
35 vector<int>::iterator itEnd=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
36
37 for_each(vTarget.begin(), itEnd, myprint);
38 cout << endl;
39
40 }
41
42 //set_union 并集 有序序列
43
44 class MyPrint
45 {
46 public:
47
48 void operator()(int l)
49 {
50 cout << l << " ";
51 }
52 };
53
54
55 void test02()
56 {
57 vector<int>v1;
58 vector<int>v2;
59
60 for (int i = 0; i < 10; i++)
61 {
62 v1.push_back(i);
63 v2.push_back(i + 5);
64 }
65
66 vector<int>vTarget;
67 //最特殊的情况是 没有交集 并集两个容器相加
68 vTarget.resize(v1.size()+v2.size());
69
70 vector<int>::iterator itEnd=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
71 for_each(vTarget.begin(), itEnd, MyPrint());
72 cout << endl;
73
74 }
75
76 //set_difference //求两个容器的差集
77 void myPrint(int vc)
78 {
79 cout << vc << " ";
80 }
81 void test03()
82 {
83 vector<int>v1;
84 vector<int>v2;
85
86 for (int i = 0; i < 10; i++)
87 {
88 v1.push_back(i);
89 v2.push_back(i + 5);
90 }
91
92 //差集放到目标容器中
93 //最特殊的情况 两个容器没有交集 取大的空间
94 vector<int>vTarget;
95 vTarget.resize(max(v1.size(), v2.size()));
96
97 cout << "V1和V2的差集" << endl;
98 vector<int>::iterator Itend = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
99
100
101 for_each(vTarget.begin(), Itend, myPrint);
102 cout << endl;
103
104 cout << "V2和V1的差集" << endl;
105 Itend = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());
106
107 for_each(vTarget.begin(), Itend, myPrint);
108 cout << endl;
109
110 }
111
112 int main()
113 {
114 test01();
115
116 test02();
117
118 test03();
119 system("pause");
120 return 0;
121 }

C++ //常用集合算法 //set_intersection //求俩个容器的交集 //set_union //求两个容器的并集 //set_difference //求两个容器的差集的更多相关文章
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- Python实现常用排序算法
Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...
- Java常用排序算法及性能测试集合
测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- stl集合算法
accumulate() 累加 accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> vector<i ...
- STL_算法_05_集合算法
◆ 常用的集合算法: 1. 1.1.第6讲 PPT.40 ◆ set_union() : 构造一个有序序列,包含两个有序序列的并集. 1.2.第6讲 PPT.40 ◆ set_intersectio ...
- javascript常用经典算法实例详解
javascript常用经典算法实例详解 这篇文章主要介绍了javascript常用算法,结合实例形式较为详细的分析总结了JavaScript中常见的各种排序算法以及堆.栈.链表等数据结构的相关实现与 ...
- STL_常用的算法
STL_常用的算法 一.常用的查找算法 adjacent_find() adjacent_find(iterator beg, iterator end, _callback); 在iterator对 ...
- 机器学习04-(决策树、集合算法:AdaBoost模型、BBDT、随机森林、分类模型:逻辑回归)
机器学习04 机器学习-04 集合算法 AdaBoost模型(正向激励) 特征重要性 GBDT 自助聚合 随机森林 分类模型 什么问题属于分类问题? 逻辑回归 代码总结 波士顿房屋价格数据分析与房价预 ...
- c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode
#include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...
随机推荐
- 玩一玩 VictoriaLogs
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 下载 see: https://github.com/Vi ...
- 【K哥爬虫普法】大众点评VS百度地图,论“数据权属”对爬虫开发的罪与罚!
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知 ...
- 情侣纪念日网站html5源码教程
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 预览图 直接进入我的网站吧 >> Z_ ...
- vim 从嫌弃到依赖(0)——概述
最近我想开一个新的系列,记录我使用vim的相关心得.初次接触vim是在大学操作系统实践课程中,跟着Linux一块进行学习的.当初我是百般嫌弃它的,想要进行编辑还要按下其他键,我想要移动光标居然还的切换 ...
- TienChin 渠道管理-添加渠道页面开发
略过,前面已将渠道管理的 index.vue 文件内容全部粘贴给你们了.
- CE修改器入门:寻找指针基址
上一步阐述了如何使用代码替换功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针,在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不 ...
- WebAssembly入门笔记[4]:利用Global传递全局变量
利用WebAssembly的导入导出功能可以灵活地实现宿主JavaScript程序与加载的单个wasm模块之间的交互,那么如何在宿主程序与多个wasm之间传递和共享数据呢?这就需要使用到Global这 ...
- SpringSecurity 的登录流程
用过SpringSecurity的小伙伴,都知道 Authentication 这个接口,我们在任何地方通过这个接口来获取到用户登录的信息,而我们用的频繁的一个它的一个实现类就是 Username ...
- 一句话总结Docker与K8S的关系
一句话总结:Docker只是容器的一种,它面向的是单体,K8S可以管理多种容器,它面向的是集群,Docker可以作为一种容器方案被K8S管理.下文继续具体介绍. 1.容器的核心概念 介绍这几个核心概念 ...
- OGG-Postgres实时同步到MySQL
(一)数据库信息 名称 源端数据库 目标端数据库 数据库类型 Postgresql 12.4 MySQL 5.7 IP地址 20.2.127.23 20.2.127.24 端口 5432 3306 数 ...