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 ...
随机推荐
- css自适应各种格式背景图
body { position: relative; background-color: #eee; background-image: url(链接); background-size: 100%; ...
- 【心理学CPCI收录,AP独立出版】 2023年应用心理学与现代化教育国际学术会议(ICAPME 2023)
[心理学CPCI收录,AP独立出版] 2023年应用心理学与现代化教育国际学术会议(ICAPME 2023) 大会官网:www.icapme.org 大会时间:2023年9月22-24日 大会地点: ...
- tensorflow语法【tf.gather_nd、reduce_sum、collections.deque 、numpy.random.seed()、tf.gradients()】
相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...
- 验证码识别服务2Captcha框架
2Captcha是一个自动验证码识别服务,主要用于解决各种互联网服务中的验证码问题.在许多网站注册账户或进行敏感操作时,为了验证用户是真实的而不是自动化程序,会出现验证码.用户必须正确输入验证码,才能 ...
- 驱动开发:应用DeviceIoContro开发模板
内核中执行代码后需要将结果动态显示给应用层的用户,DeviceIoControl 是直接发送控制代码到指定的设备驱动程序,使相应的移动设备以执行相应的操作的函数,如下代码是一个经典的驱动开发模板框架, ...
- 遥感图像处理笔记之【Land use/Land cover classification with Deep Learning】
遥感图像处理学习(1) 前言 遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2023年12月14日CSDN平台 2024年1月24日搬运至本人博客园平台 文章标题:Land use/Land ...
- Django之FBV和CBV模式
FBV就是 url路由>>>业务处理函数的方式,CBV就是url路由>>>类 的处理业务方式. 最常用的就是FBV模式,就不用过多赘述,直接上CBV的实用代码. 1 ...
- CF1706E Qpwoeirut and Vertices 题解
题目链接:CF 或者 洛谷 官解看上去挺智慧的,来点朴素的解法.我们来当做纯 ds 题去做.首先明确一点,图中若干个点关于最早连通性的这个问题可以考虑 \(MST\),我们有一类东西叫 \(krusk ...
- P9474 [yLOI2022] 长安幻世绘题解
题目链接: [yLOI2022] 长安幻世绘 比较不错的综合题.考虑下处理极差的绝对值我们应该怎么做,很显然排序是有必要的,我们需要带着下标排序. 考虑几个核心点: 1.假如没有其他限制考虑极差与序列 ...
- Oracle 19c RAC自动应用RU补丁过程
笔者好久没有使用opatchauto打过补丁了,搜了下自己的历史随笔,上次opatchauto打补丁的记录还是Oracle 11g版本: Oracle 11g RAC 自动应用PSU补丁简明版 而11 ...