当前位置: 首页 > news >正文

C++值常用集合算法

C++值常用集合算法

在这里插入图片描述

set_intersection

在这里插入图片描述
在这里插入图片描述

#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
#include<algorithm>class MyPrint
{
public:void operator()(int val){cout << val<<" ";}
};void test()
{vector<int> v;vector<int>v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 3);}vector<int>Target;//目标容器需要开辟空间//最特殊的情况 大容器包含小容器 取小容器大小即可Target.resize(min(v.size(), v2.size()));//获取交集vector<int>::iterator itEnd = set_intersection(v.begin(), v.end(), v2.begin(), v2.end(), Target.begin());for_each(Target.begin(), itEnd, MyPrint());cout << endl;
}int main()
{test();system("pause");return 0;
}

在这里插入图片描述
在这里插入图片描述

set_union

在这里插入图片描述
在这里插入图片描述

#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
#include<algorithm>class MyPrint
{
public:void operator()(int val){cout << val<<" ";}
};void test()
{vector<int> v;vector<int>v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 3);}vector<int>Target;//目标容器需要开辟空间//最特殊的情况 两个容器没有交集 目标容器的大小就是二个容器相加Target.resize(v.size() + v2.size());//获取交集vector<int>::iterator itEnd = set_union(v.begin(), v.end(), v2.begin(), v2.end(), Target.begin());for_each(Target.begin(), itEnd, MyPrint());cout << endl;
}int main()
{test();system("pause");return 0;
}

在这里插入图片描述
在这里插入图片描述

set_difference

在这里插入图片描述
在这里插入图片描述

#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
#include<algorithm>class MyPrint
{
public:void operator()(int val){cout << val<<" ";}
};void test()
{vector<int> v;vector<int>v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 3);}vector<int>Target;//目标容器需要开辟空间//最特殊的情况 两个容器没有交集 取大的容器Target.resize(max(v.size() ,v2.size()));//获取交集cout << "v和v2的差集" << endl;vector<int>::iterator itEnd = set_difference(v.begin(), v.end(), v2.begin(), v2.end(), Target.begin());for_each(Target.begin(), itEnd, MyPrint());cout << endl;cout << "v2和v1的差集" << endl;itEnd = set_difference(v2.begin(), v2.end(), v.begin(), v.end(), Target.begin());for_each(Target.begin(), itEnd, MyPrint());cout << endl;
}int main()
{test();system("pause");return 0;
}

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 简易键值对文本解析
  • LINUX入门篇【10】---进程篇【2】---进程状态
  • TCP/IP协议、三次握手、四次挥手
  • <JavaEE> 什么是线程(Thread)?进程和线程有什么区别?
  • 性能优化中使用Profiler进行内存泄露的排查及解决方式
  • Linux 中的 ls 命令使用教程
  • anacoda 在 git 远程仓库的时候遇到 SSL 无法访问和字节缓冲太小和换源以及无法连接到官网和字节写入冲突
  • Linux——使用命令查看文件和文件夹数量
  • react项目自行配置热更新
  • 1-1、汇编语言概述
  • 【Python】巧用tkinter设计秒表计时器
  • linux下的工具---vim
  • 电力感知边缘计算技术网关产品设计方案-硬件方案
  • Kafka 集群如何实现数据同步
  • mysql使用--存储程序
  • ➹使用webpack配置多页面应用(MPA)
  • Android单元测试 - 几个重要问题
  • Flannel解读
  • HTTP--网络协议分层,http历史(二)
  • iOS小技巧之UIImagePickerController实现头像选择
  • PHP CLI应用的调试原理
  • react 代码优化(一) ——事件处理
  • React+TypeScript入门
  • 安卓应用性能调试和优化经验分享
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 面试总结JavaScript篇
  • 前端相关框架总和
  • 我从编程教室毕业
  • 源码安装memcached和php memcache扩展
  • 大数据全解:定义、价值及挑战
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #Linux(make工具和makefile文件以及makefile语法)
  • #QT(智能家居界面-界面切换)
  • (LeetCode) T14. Longest Common Prefix
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Oracle)SQL优化技巧(一):分页查询
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (十)T检验-第一部分
  • (转)德国人的记事本
  • .Net 高效开发之不可错过的实用工具
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .Net中的集合
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @ModelAttribute注解使用
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [AIGC codze] Kafka 的 rebalance 机制
  • [AIGC] Redis基础命令集详细介绍
  • [Angular] 笔记 8:list/detail 页面以及@Input