【C++】常用集合算法

0.前言

在这里插入图片描述

1.set_intersection

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

#include <iostream>
using namespace std;


// 常用集合算法 交集set_intersection
#include<vector>
#include<algorithm>

void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	vector<int>v1, v2;

	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
		v2.push_back(i + 5);
	}

	vector<int>TargetV;
	TargetV.resize(min(v1.size(), v2.size()));

	vector<int>::iterator Itend = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), TargetV.begin());

	for_each(TargetV.begin(), Itend, myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

在这里插入图片描述

2.set_union

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

#include <iostream>
using namespace std;


// 常用集合算法 并集set_union
#include<vector>
#include<algorithm>

void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	vector<int>v1, v2;
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
		v2.push_back(i + 5);
	}

	vector<int>TargetV;
	//目标容器提前开辟空间
	//最特殊情况 两个容器没有交集, 并集就是两个容器size相加
	TargetV.resize(v1.size() + v2.size());

	vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), TargetV.begin());

	for_each(TargetV.begin(), itEnd, myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

在这里插入图片描述

3.set_difference

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

#include <iostream>
using namespace std;


// 常用集合算法 差集set_difference
#include<vector>
#include<algorithm>

void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	vector<int>v1, v2;
	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
		v2.push_back(i + 5);
	}

	vector<int>TargetV;
	//给目标容器开辟空间
	//最特殊情况 两个容器没有交集 取两个容器中大的size作为目标容器开辟空间
	TargetV.resize(max(v1.size(), v2.size()));

	vector<int>::iterator itEnd = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), TargetV.begin());
	
	cout << "v2和v1的差集:" << endl;
	set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), TargetV.begin());
	for_each(TargetV.begin(), itEnd, myPrint);
	cout << endl;

	cout << "v1和v2的差集:" << endl;
	set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), TargetV.begin());
	for_each(TargetV.begin(), itEnd, myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 徐士良常用算法程序集c是指他经常使用的一套C语言编写的算法程序集合。C语言作为一种高级编程语言,具有跨平台、高效、灵活等优点,适合用于开发算法程序。 徐士良使用算法程序集c的目的是为了解决各种算法问题,并提供高性能、可靠的解决方案。算法是计算机科学和信息技术的核心,涵盖许多重要的领域,如搜索、排序、图论等。通过使用算法程序集c,徐士良可以更好地应对这些问题,提高算法的效率和准确性。 该算法程序集c主要包含各种常见算法的实现代码,比如:贪心算法、动态规划、回溯算法、分治算法等。徐士良可以根据具体问题的需求,选择合适的算法,并根据程序集中提供的代码进行调用和实现。 使用算法程序集c的好处是可以提高开发效率和程序质量。徐士良不需要从零开始编写算法的具体实现,而是直接调用算法程序集c中的代码,节省了大量的时间和精力。此外,算法程序集c经过多次测试和优化,保证了算法的正确性和性能。 总之,通过使用算法程序集c,徐士良能够更加高效和准确地解决各种算法问题,提高程序的开发质量和效率。这对于他在软件开发、数据分析等领域的工作都具有重要意义。 ### 回答2: 徐士良常用算法程序集C是指一套由徐士良所编写和使用的常用算法程序集合。这个程序集是基于C语言开发的,包含了多种常见算法的实现代码。 徐士良作为一位资深的程序员,长期从事算法研究和程序开发工作。他在不同的项目中经常需要使用各种算法来解决实际问题,因此他逐渐积累了大量的算法实现代码。 这个算法程序集包括了各种常用算法,如排序算法(如冒泡排序、快速排序、归并排序等)、搜索算法(如线性搜索、二分搜索等)、图算法(如最短路径算法、最小生成树算法等)、动态规划算法、贪心算法等等。徐士良在实际开发中根据具体问题的特点选择合适的算法来解决,以提高程序的效率和优化用户体验。 这个算法程序集不仅包含了算法的实现代码,还包括了详细的注释和解释,使得其他程序员可以更容易地理解和使用这些算法。徐士良经常在技术交流和教学活动中分享自己的算法程序集,帮助其他人更好地掌握和应用算法。 总之,徐士良常用算法程序集C是他在长期编程实践中总结和积累的一套包含多种常用算法的程序集,它能够帮助其他程序员解决各种实际问题,提高程序的效率和性能。 ### 回答3: 徐士良常用算法程序集C是一套基于C语言编写的算法库,包含了多种常见的算法和数据结构实现。这套程序集主要用于解决各种实际问题,并且具有高效、可靠和灵活的特点。 徐士良常用算法程序集C涵盖了许多经典的算法,例如排序算法(如冒泡排序、快速排序和归并排序等)、搜索算法(如二分查找、深度优先搜索和广度优先搜索等)、图算法(如最短路径算法和最小生成树算法等)和动态规划算法(如背包问题和最长公共子序列等)等等。 除了常见的算法,徐士良还在这套程序集中实现了一些常用的数据结构,例如线性表(如数组和链表等)、栈、队列、树和图等。这些数据结构可以用于解决各类问题,并且在实际应用中具有广泛的适用性。 通过使用徐士良常用算法程序集C,开发者可以节省大量的时间和精力,因为这套程序集已经提供了各种常见算法和数据结构的实现,无需从头编写。开发者只需要调用相应的函数,传入参数即可完成相关的任务。这样不仅提高了开发效率,还可以避免重复造轮子的问题。 总而言之,徐士良常用算法程序集C是一套丰富而实用的算法库,可以帮助开发者解决各种实际问题。无论是排序、搜索、图算法还是常见的数据结构,这套程序集都能提供高效、可靠和灵活的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值