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 ...
随机推荐
- 几种方法验证unity是否为development build
我在月初接入了uwa的性能测试SDK,需要提交一个development build的游戏安装包给uwa进行真人真机测试,本文说下如何判断安装包是否为development build. 直观上判断 ...
- 关于git pull机制和游戏开发热更新思考
前言 今天由于网速很慢,在git pull更新时我观看了git pull的日志,让我联想到和我现在从事的游戏开发中的热更热有一定的相似性,把思绪记录下来. git pull 日志 使用tortoi ...
- 声明式API和命令式API的区别
声明式API 声明式和命令式的对比 Kubernetes 声明式 API 的工作原理 参考 声明式API 声明式和命令式的对比 命令式 命令式有时也称为指令式,命令式的场景下,计算机只会机械的完成指定 ...
- 【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
1.分布式训练简介 分布式训练的核心目的: 加快模型的训练速度.通过对训练任务按照一定方法拆分分配到多个计算节点进行计算,再按照一定的方法对需要汇总的信息进行聚合,从而实现加快训练速度的目的. 1.1 ...
- 【6】python生成数据曲线平滑处理——(Savitzky-Golay 滤波器、convolve滑动平均滤波)方法介绍,推荐玩强化学习的小伙伴收藏
相关文章: Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图 先上效果图: 由于高频某些点的波动导致高频曲线非常难看,为了降低噪声干扰,需要对曲线做平滑处理,让曲线过 ...
- Visual Studio安装教程、Visual Studio2017软件提供,版本序列号丨编写第一个程序。
一.安装步骤 1.安装前注意一下自己电脑的IE浏览器是不是10 版本及以上的,如果不是要先升级到10才能安装 Visual Studio2017.打开IE浏览器,点击[设置]接着点击[关于]即可查看. ...
- uni-app 介绍及使用
一.什么是uni-app uni-app由dcloud公司开发的多端融合框架,是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以 ...
- 关于laravel路由无法访问(nginx)
laravel路由无法访问 被这个问题折腾了 好几次了,记录一下希望可以帮到后面的朋友 在laravel路由中配置好了之后无法访问的问题有可能是因为在本地服务配置的问题(我使用的是nginx服务器) ...
- SpringBoot中优雅地实现统一响应对象
目录 前言 实现步骤 定义统一响应对象类 定义一个忽略响应封装的注解 实现ResponseBodyAdvice接口 定义Controller类 总结 前言 近日心血来潮想做一个开源项目,目标是做一款可 ...
- TCP和UDP面试题提问
@ 目录 TCP UDP 总结 应用 TCP(传输控制协议)和UDP(用户数据报协议)是两种计算机网络通信协议,它们在网络通信中起着不同的作用. TCP TCP 是面向连接的协议,它在数据传输之前需要 ...