C++值常用集合算法

C++值常用集合算法

C++值常用集合算法_第1张图片

set_intersection

C++值常用集合算法_第2张图片
C++值常用集合算法_第3张图片

#include
using namespace std;
#include
#include
#include

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

void test()
{
	vector v;
	vectorv2;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
		v2.push_back(i + 3);
	}

	vectorTarget;
	//目标容器需要开辟空间
	//最特殊的情况 大容器包含小容器 取小容器大小即可
	Target.resize(min(v.size(), v2.size()));

	//获取交集
	vector::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;
}

C++值常用集合算法_第4张图片
C++值常用集合算法_第5张图片

set_union

C++值常用集合算法_第6张图片
C++值常用集合算法_第7张图片

#include
using namespace std;
#include
#include
#include

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

void test()
{
	vector v;
	vectorv2;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
		v2.push_back(i + 3);
	}

	vectorTarget;
	//目标容器需要开辟空间
	//最特殊的情况 两个容器没有交集 目标容器的大小就是二个容器相加
	Target.resize(v.size() + v2.size());

	//获取交集
	vector::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;
}

在这里插入图片描述
C++值常用集合算法_第8张图片

set_difference

C++值常用集合算法_第9张图片
C++值常用集合算法_第10张图片

#include
using namespace std;
#include
#include
#include

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

void test()
{
	vector v;
	vectorv2;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
		v2.push_back(i + 3);
	}

	vectorTarget;
	//目标容器需要开辟空间
	//最特殊的情况 两个容器没有交集 取大的容器
	Target.resize(max(v.size() ,v2.size()));

	//获取交集
	cout << "v和v2的差集" << endl;
	vector::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;
}

C++值常用集合算法_第11张图片

C++值常用集合算法_第12张图片

你可能感兴趣的:(C++,c++,算法,rpc)