17.C++常用的算法_集合算法

news2025/2/26 15:16:41

文章目录

    • 遍历算法
      • 1. set_intersection()
        • 代码工程
        • 运行结果
      • 2. set_union()
        • 代码工程
        • 运行结果
      • 3. set_difference()
        • 代码工程
        • 运行结果

遍历算法

1. set_intersection()

代码工程
/*1.求交集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要从两个容器中取较小值*/
/*3.set_intersection返回值是交集中最后一个元素的位置*/
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

/*1.求交集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要从两个容器中取较小值*/
/*3.set_intersection返回值是交集中最后一个元素的位置*/
 
class print
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

void test01()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i); //0 1 2 3 4 5 6 7 8 9
		v2.push_back(i + 5);//5 6 7 8 9 10 11 12 13 14
	}
	//两个容器的交集为 5 6 7 8 9

	//目标容器
	vector<int>vTarget;
	//交集开辟的空间为两个容器较小的空间
	vTarget.resize(min(v1.size(), v2.size()));

	//求两个容器的交集
	vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());

	cout << "交集为:";

	//这里如果不用迭代器itEnd,使用vTarget.end(),会把容器后边的5个0打印出来
	for_each(vTarget.begin(), itEnd, print());

	cout << endl;

	return;
}

int main()
{
	test01();

	return 0;
}

运行结果

在这里插入图片描述

2. set_union()

/*1.求并集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要两个容器相加*/
/*3.set_union返回值是并集中最后一个元素的位置*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

/*1.求并集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要两个容器相加*/
/*3.set_union返回值是并集中最后一个元素的位置*/

class print
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

void test01()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i); //0 1 2 3 4 5 6 7 8 9
		v2.push_back(i + 5);//5 6 7 8 9 10 11 12 13 14
	}
	//两个容器的并集为 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

	//目标容器
	vector<int>vTarget;
	//并集开辟的空间为两个容器相加的空间大小
	vTarget.resize(v1.size() + v2.size());

	//求两个容器的并集
	vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());

	cout << "并集为:";

	//这里如果不用迭代器itEnd,使用vTarget.end(),会把容器后边的5个0打印出来
	for_each(vTarget.begin(), itEnd, print());

	cout << endl;

	return;
}

int main()
{
	test01();

	return 0;
}

运行结果

在这里插入图片描述

3. set_difference()

/*1.求差集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要从两个容器取较大值*/
/*3.set_difference返回值是并集中最后一个元素的位置*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

/*1.求差集的两个集合必须是有序序列*/
/*2.目标容器开辟空间需要从两个容器取较大值*/
/*3.set_difference返回值是并集中最后一个元素的位置*/

class print
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

void test01()
{
	vector<int>v1;
	vector<int>v2;
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i); //0 1 2 3 4 5 6 7 8 9
		v2.push_back(i + 5);//5 6 7 8 9 10 11 12 13 14
	}
	
	//目标容器
	vector<int>vTarget;
	//差集 最特殊的情况 两个容器没有交集 取两个容器中较大的size作为目标容器开辟空间
	vTarget.resize(max(v1.size(), v2.size()));

	cout << "v1和v2的差集为:";

	//v1和v2的差集为 0 1 2 3 4
	vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());

	for_each(vTarget.begin(), itEnd, print());

	cout << endl;

	cout << "v2和v1的差集为:";

	//v2和v1的差集为 10 11 12 13 14
	itEnd = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());

	for_each(vTarget.begin(), itEnd, print());

	cout << endl;

	return;
}

int main()
{
	test01();

	return 0;
}


运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

90年代女神返港行李失踪 怒斥国泰航空

现年51岁的童爱玲在1993年拍摄电影《火蝴蝶》入行&#xff0c;外形出众的她当年曾与梁朝伟、黎明等男神合作&#xff0c;因而被封为「男神磁石」。虽然童爱玲与台湾富商王敦民结婚诞下一子后&#xff0c;便淡出演艺圈&#xff0c;但她曾在2022年复出拍摄ViuTV剧集《季前赛》&am…

chatgpt免费使用网站

在人工智能的浪潮中&#xff0c;OpenAI的ChatGPT作为一款前沿的语言处理工具&#xff0c;已经引起了广泛的关注和讨论。 ChatGPT以其卓越的语言理解和生成能力&#xff0c;为用户提供了多样化的应用场景&#xff0c;从日常对话、编程辅助到内容创作等。然而&#xff0c;对于许…

PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出)

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出) 订阅专栏只能获取一份代码 部分源码 %------

小程序中使用HTTPS调用自带文本安全内容检测接口(msg_sec_check)的实现方法

在小程序中调用自带的文本安全内容检测接口&#xff0c;你需要使用小程序提供的wx.request方法。以下是一个示例代码&#xff1a; javascript代码: // 假设你已经获取了access_token,如果不知道如何获取&#xff0c;可以参考我上一篇文章 const access_token 你的access_tok…

FlinkCDC基础篇章2-数据源 SqlServerCDC写入到ES中

接着 上期FlinkCDC基础篇章1-安装使用 下载 Flink 和所需要的依赖包 # 下载 Flink 1.17.0 并将其解压至目录 flink-1.17.0 下载下面列出的依赖包&#xff0c;并将它们放到目录 flink-1.17.0/lib/ 下&#xff1a; 下载链接只对已发布的版本有效, SNAPSHOT 版本需要本地编译 …

云原生Kubernetes: K8S 1.29版本 部署Jenkins

目录 一、实验 1.环境 2.K8S 1.29版本 部署Jenkins 服务 3.jenkins安装Kubernetes插件 二、问题 1.创建pod失败 2.journalctl如何查看日志信息 2.容器内如何查询jenkins初始密码 3.jenkins离线安装中文包报错 4.jenkins插件报错 一、实验 1.环境 &#xff08;1&…

微服务使用SockJs+Stomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑(一)

大家好&#xff0c;我是程序员大猩猩。 之前几篇文章&#xff0c;我们讲了Spring Cloud Gateway的轻量级实现&#xff0c;Nginx的配置概念与实现&#xff0c;如以下往期文章。 轻量级的Spring Cloud Gateway实践&#xff0c;实现api和websocket转发轻松实现Nginx的HTTP与WebS…

OpenHarmony实战开发-搜索功能实现案例、如何使用includes方法对数据实现模糊查询

介绍 本示例介绍使用includes方法对数据实现模糊查询 效果图预览 使用说明 点击首页搜索框跳转到搜索页面在搜索页面输入框中输入搜索的内容&#xff0c;下方列表自动根据搜索的内容进行筛选渲染点击筛选后的列表跳转到相应的页面跳转后会保存搜索历史&#xff0c;搜索历史使…

14-Error Handling (错误处理)

ESP32-S3错误处理&#xff1a;理解并掌握其重要性 在编程中&#xff0c;错误处理是一种重要的编程实践&#xff0c;它可以帮助我们的程序在遇到错误时能够优雅地恢复&#xff0c;而不是崩溃或产生不可预测的结果。在IDF中官方提供一些实用的错误处理技巧。&#x1f469;‍&…

java扩展jmeter依赖

前置条件 创建一个maven项目&#xff0c; 引入依赖 <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>3.2</version> </dependency> <dependency><groupId&g…

吴恩达2022机器学习专项课程(一) 6.1 动机第三周课后实验:Lab1使用逻辑回归进行分类

问题预览/关键词 回归和分类的区别&#xff1f;逻辑回归的作用是&#xff1f;什么是二分类问题&#xff1f;二分类问题案例如何表达二分类的结果&#xff1f;逻辑回归通常用哪种表达形式&#xff1f;什么是正样本和负样本&#xff1f;什么是阈值&#xff1f;可视化线性回归解决…

论婚恋相亲交友软件的市场前景和开发方案H5小程序APP源码

随着移动互联网的快速发展和社交需求的日益增长&#xff0c;婚恋相亲交友软件小程序成为了越来越多单身人士的选择。本文将从市场前景、使用人群、盈利模式以及竞品分析等多个角度&#xff0c;综合论述这一领域的现状与发展趋势。 一、市场前景 在快节奏的现代生活中&#xf…

ubuntu 22.04 编译 ORBSLAM3

源码地址&#xff08;带注释&#xff09;&#xff1a;ORBSLAM3 根据你安装的openCv版本修改cmake 修改2个文件的2个地方&#xff1a; ORB_SLAM3_detailed_comments-master/CMakeLists.txt ORB_SLAM3_detailed_comments-master/Thirdparty/DBoW2/CMakeLists.txt 查找openCv的地…

Python 爬虫如何配置代理 IP (Py 采集)

在Python中配置代理IP&#xff0c;可以通过设置requests库的proxies参数来实现。以下是一个示例&#xff1a; import requests# 则立可以获取稳定代理Ip&#xff1a;https://www.kuaidaili.com/?refrg3jlsko0ymg # 推荐使用私密动态 IP proxies {"http": "ht…

Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models论文解读

文章目录 前言一、摘要二、引言三、文献1、大语言模型文献2、视觉语言模型文献3、LLM作为生成助手文献 四、模型方法与结果1、Dual Vision Encoders3、Patch Info Mining4、Text and Image Generation1、Text-image Instructions2、Generation-related Instructions 五、实验结…

webAssembly学习及使用rust

学习理解 webAssembly 概念知识&#xff0c;使用 API 进行 web 前端开发。 概念 是一种运行在现代网络浏览器中的新型代码&#xff0c;并且提供新的性能特性和效果。它有一种紧凑的二进制格式&#xff0c;使其能够以接近原生性能的速度运行。C/C、 C#、Rust等语言可以编译为 …

手写Java设计模式之抽象工厂模式,附源码解读

接上篇&#xff0c;抽象工厂模式将汽车的一些属性可以抽象出来&#xff0c;可以理解为给不同汽车品牌生成时加上不同的特性&#xff0c;如颜色等&#xff0c;具体代码如下&#xff1a; 引入颜色接口&#xff1a; public interface Colour {void fill(); }将颜色与汽车生成品牌…

Django项目使用uwsgi+nginx部署上线

Django项目使用uwsginginx部署上线 前言settings 配置安装uwsgi 和配置uwsgi推荐配置文件启用wsgi不使用nginx的配置&#xff08;不推荐&#xff09;使用nginx的配置 安装 nginx和配置niginx 配置 运行参考资料 前言 代码已经开发完成&#xff0c;正式部署上线 settings 配置…

公网IP地址如何申请SSL证书?有免费的IP ssl吗?

如果用户没有域名或只有公网IP地址或者不方便使用域名&#xff0c;IP地址ssl证书这一特殊的证书可以为IP地址实现HTTPS的安全保护&#xff0c;提高网站数据传输的安全性。 IP地址申请SSL证书的基本步骤 IP ssl证书下载---注册填写230916https://www.joyssl.com/certificate/sel…

Stable Diffusion UI 从安装到实现文字图片融合(光影字,错觉图)图片制作详细教程

前言 最近在实践大模型本地部署&#xff0c;前几天在本地部署了一个ChatGLM大模型&#xff0c;刚好环境搭好了&#xff0c;也支持跑Stable Diffusion&#xff0c;所以就安装了再尝试一下。 原因是之前在B站上有大佬做了一个Windows电脑能一键运行的Stable Diffusion的安装包&…