【C++中的STL】常用算法5——常用集合算法

常用集合算法

  • set_intersection
  • set_union
  • set_difference

1、 set_intersection求两个容器的交集
2、 set_union求两个容器的并集
3、 set_difference求两个容器的差集

set_intersection

求两个容器的交集
set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);两个集合必须是有序序列,beg1容器1开始迭代器,end1容器1结束迭代器,beg2容器2开始迭代器,end2容器2结束迭代器,dest目标容器开始迭代器

void test() {vector<int> v;v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(34);v.push_back(35);for_each(v.begin(), v.end(), p3);cout << endl;vector<int> v1;v1.push_back(10);v1.push_back(20);v1.push_back(34);v1.push_back(56);v1.push_back(67);for_each(v1.begin(), v1.end(), p3);cout << endl;vector<int>v2; // 目标容器//特殊情况下,大容器包含小容器,开辟空间 取小容器的大小就可以v2.resize(min(v.size(), v1.size()));// 求集合交集到目标容器,返回的是最后一个交集的迭代器vector<int>::iterator EndIt = set_intersection(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());//如果第二个参数是v.end()是遍历整个数组,会出现空间不足的情况,所有用获取的位置for_each(v2.begin(), EndIt, p3);
}

在这里插入图片描述
目标容器开辟空间在两个容器中取小的容器空间就可以,set_intersection返回值即是交集中最后一个元素的位置。

set_union

求两个容器的并集
set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);两个集合必须是有序序列,beg1容器1开始迭代器,end1容器1结束迭代器,beg2容器2开始迭代器,end2容器2结束迭代器,dest目标容器开始迭代器

void test() {...v2.resize(v.size()+v1.size());// 求集合交集到目标容器,返回的是最后一个交集的迭代器vector<int>::iterator EndIt = set_union(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());...
}

在这里插入图片描述
目标容器开辟空间需要两个容器空间相加,set_union返回值即是交集中最后一个元素的位置。

set_difference

两个集合的差集
set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);两个集合必须是有序序列,beg1容器1开始迭代器,end1容器1结束迭代器,beg2容器2开始迭代器,end2容器2结束迭代器,dest目标容器开始迭代器

void test() {...vector<int>v2; // 目标容器//最特殊的情况,两个容器没有交集,取大的容器空间v2.resize(max(v.size(),v1.size()));// 求集合交集到目标容器,返回的是最后一个交集的迭代器//v和v1的差集vector<int>::iterator EndIt = set_difference(v.begin(), v.end(), v1.begin(), v1.end(), v2.begin());cout << "v和v1的差集:" ;for_each(v2.begin(), EndIt, p3);cout << endl;cout << "-------------------------------------" << endl;//v1和v的差集vector<int>::iterator EndIt1 = set_difference(v1.begin(), v1.end(), v.begin(), v.end(), v2.begin());cout << "v1和v的差集:";for_each(v2.begin(), EndIt1, p3);
}

在这里插入图片描述
目标容器开辟空间在两个容器中取大的空间就可以,set_difference返回值即是交集中最后一个元素的位置。两个容器的顺序不同结果也不同.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/441311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自建DNS劫持服务器,纯内网劫持PS5,屏蔽更新,自动hen

背景&#xff1a;目前PS5首次折腾必须要连外网&#xff0c;还要改DNS&#xff0c;除非使用ESP8266/32&#xff0c; 本文的方法是完全不改DNS&#xff0c;不使用ESP8266,不连接外网的情况下自动折腾 能实现什么&#xff1a; 1.折腾全程不连接外网 2.完全自建hen服务器&#xff…

我们是如何测试人工智能的(六)推荐系统拆解

推荐系统简介 推荐系统的问题 根据之前学习到的内容&#xff0c;我们已经基本了解到了要如何构建一个二分类模型。我们都知道模型大体可以分成&#xff0c;回归&#xff0c;二分类和多分类。但推荐系统是属于哪一种场景呢&#xff0c;比如我们常见的广告推荐或者内容推荐&…

探索水下低光照图像检测性能,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来水比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《尝试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…

Django4.2(DRF)+Vue3 读写分离项目部署上线

文章目录 1 前端2 后端2.1 修改 settings.py 文件关于静态文件2.2 关于用户上传的文件图片 3 Nginx4 镜像制作4.1 nginx4.3 Django镜像4.3.1 构建 5 docker-compose 文件内容 1 前端 进入前端项目的根目录&#xff0c;运行如下命令进行构建 npm run build构建完成后&#xff…

Easy-Es操作Elasticsearch

文章目录 1 Easy-Es1.1 简介1.2 MySQL与Easy-Es语法对比1.3 集成及配置1.3.1 pom.xml1.3.2 配置 1.4 使用1.4.1 注解的使用1.4.2 EsMapper接口1.4.3 简单搜索 1.5 使用案例1.5.1 综合商品搜索1.5.2 相关商品推荐1.5.3 聚合搜索商品相关信息 1 Easy-Es 使用过Spring Data操作ES…

【Tomcat与网络3】Tomcat的整体架构

目录 1.演进1&#xff1a;将连接和处理服务分开 2演进2&#xff1a;Container的演进 3 再论Tomcat的容器结构 4 Tomcat处理请求的过程 5 请求的处理过程与Pipeline-Valve管道 在前面我们介绍了Servlet的基本原理&#xff0c;本文我们结合Tomcat来分析一下如何设计一个大型…

Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】

目录 任务描述 知识回顾 实验内容 测试结果 Cache Lab 对应《CS:APP》6.3节至第六章结束的内容。 任务描述 Your job for Part A is to fill in the csim.c file so that it takes the same command line arguments and produces the identical output as the reference …

[NCTF2019]Fake XML cookbook(特详解)

先试了一下弱口令&#xff0c;哈哈习惯了 查看页面源码发现xml function doLogin(){var username $("#username").val();var password $("#password").val();if(username "" || password ""){alert("Please enter the usern…

基于大数据的B站数据分析系统的设计与实现

摘要&#xff1a;随着B站&#xff08;哔哩哔哩网&#xff09;在国内视频分享平台的崛起&#xff0c;用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据&#xff0c;设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

代码随想录算法训练营29期|day35 任务以及具体任务

860.柠檬水找零 class Solution {public boolean lemonadeChange(int[] bills) {int five 0;int ten 0;for (int i 0; i < bills.length; i) {if (bills[i] 5) {five;} else if (bills[i] 10) {five--;ten;} else if (bills[i] 20) {if (ten > 0) {ten--;five--;} …

242. 有效的字母异位词(力扣)(C语言题解)

✨欢迎来到脑子不好的小菜鸟的文章✨ &#x1f388;创作不易&#xff0c;麻烦点点赞哦&#x1f388; 所属专栏&#xff1a;刷题 我的主页&#xff1a;脑子不好的小菜鸟 文章特点&#xff1a;关键点和步骤讲解放在 代码相应位置 题目链接&#xff1a; 242. 有效的字母异位词 …

玻璃封装高温烧结航空插头插座连接器

概述 随着风电行业深入发展&#xff0c;风力发电机组使用的传感器主要有:位置传感器、加速度传感器、压力传感器、温度传感器、液位传感器、电压电流互感器、压点薄膜传感器等。对电子元器件的性能提出了更进一步的要求。连接器作为连接各个电子元器件的血脉&#xff0c;在保持…

萝卜视频源码前后端带视频演示

萝卜影视源码前端是用JAVA开发的全原生APP源码&#xff0c;后端用的是二次开发的苹果CMS&#xff0c;支持局域网投屏&#xff0c;视频软解硬解&#xff0c;播放器自带弹幕功能。支持解析官方视频&#xff0c;支持M3U8&#xff0c;MP4。 开屏广告&#xff0c;全局广告&#xff0…

Unity3D正则表达式的使用

系列文章目录 unity工具 文章目录 系列文章目录前言一、匹配正整数的使用方法1-1、代码如下1-2、结果如下 二、匹配大写字母2-1、代码如下1-2、结果如下 三、Regex类3-1、Match&#xff08;&#xff09;3-2、Matches()3-3、IsMatch&#xff08;&#xff09; 四、定义正则表达式…

【测试运维】接口测试各知识md文档学习笔记第1篇(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论接口测试相关知识。目标&#xff1a;了解接口测试服务对象&#xff0c;基本作用&#xff0c;接口测试环境插件工具&#xff0c;掌握jmeter的使用&#xff0c;掌握接口测试的测试用例编写。熟悉Jmeter工具组成&#xff0…

数据的绘画:数据可视化为我们打开信息的画卷

在迅猛发展的大数据时代&#xff0c;数据可视化成为我们逐步适应信息激增的得力工具。通过直观展示庞大复杂的数据&#xff0c;数据可视化不仅简化了信息的理解&#xff0c;更为我们提供了深入洞察的机会。这一技术的崛起不仅仅是技术的进步&#xff0c;更是对我们信息处理方式…

C++_list

目录 一、模拟实现list 1、list的基本结构 2、迭代器封装 2.1 正向迭代器 2.2 反向迭代器 3、指定位置插入 4、指定位置删除 5、结语 前言&#xff1a; list是STL(标准模板库)中的八大容器之一&#xff0c;而STL属于C标准库的一部分&#xff0c;因此在C中可以直接使用…

04MARL - priori kownledge and challenge

文章目录 一、General Learning Process二、中心化学习与独立学习1.central learning1.1 CQL1.2 局限性 2.Independent Learning2.1 IQL2.2 局限性 三、MARL挑战1.非平稳性1.1单智能体强化学习的非平稳性1.2 MARL非平稳性 2.信用分配问题3.均衡选择4.拓展性 四、协作型MARL的模…

Web实战丨基于Django的简单网页计数器

文章目录 写在前面Django简介主要程序运行结果系列文章写在后面 写在前面 本期内容 基于django的简单网页计数器 所需环境 pythonpycharm或vscodedjango 下载地址 https://download.csdn.net/download/m0_68111267/88795604 Django简介 Django 是一个用 Python 编写的高…

MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决

显示表中有两行数据&#xff0c;该表也设置了主键和唯一索引 点进表里看却没有数据 问题原因出现在这里&#xff0c;虽然很多常用的数据库连接池都会开启自动提交&#xff0c;但ibatis的SqlSession使用sessionFactory.openSession()创建时&#xff0c;默认的自动提交是false&am…