现在的位置: 首页 > 综合 > 正文

stl 中 容器 set 类基础运算 交集 并集 差集 (2)

2019年01月10日 ⁄ 综合 ⁄ 共 1620字 ⁄ 字号 评论关闭

以下的代码是对集合的交集 并集 差集 运算测试:

// stlset2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <set>
#include <algorithm>
#include <iostream>
#include <iterator>


using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	set<int> myset1;
	set<int> myset2;
	set<int> myset3;
	set<int> myset4;
	set<int> myset5;
	set<int> myset6;

	printf("myset1: \n");
	//插入  0 1 2 3 4 5 6 7 8 9
	pair<set<int>::iterator, bool> insert_pair;
	for(int i=0; i<10; i++)
	{
		insert_pair = myset1.insert(i);
	}
	copy(myset1.begin(), myset1.end(), ostream_iterator<int>(cout, " "));
	printf("\n");

	//插入5 6 7 8 9 10 11 12 13 14 
	for(int j=5; j<15;j++)
	{
		insert_pair = myset2.insert(j);
	}


	printf("myset2: \n");
	copy(myset2.begin(), myset2.end(), ostream_iterator<int>(cout, " "));
	printf("\n");

	printf("union result myset3: \n");
	//计算集合的并集运算
	set_union(myset1.begin(), myset1.end(), myset2.begin(), myset2.end(), inserter(myset3, myset3.begin()));
	copy(myset3.begin(), myset3.end(), ostream_iterator<int>(cout, " "));
	printf("\n");


	printf("intersection result myset4: \n");
	//计算集合的交集集运算
	set_intersection(myset1.begin(), myset1.end(), myset2.begin(), myset2.end(), inserter(myset4, myset4.begin()));
	copy(myset4.begin(), myset4.end(), ostream_iterator<int>(cout, " "));
	printf("\n");


	printf("difference result myset5: \n");
	//计算集合的交集集运算
	set_difference(myset1.begin(), myset1.end(), myset2.begin(), myset2.end(), inserter(myset5, myset5.begin()));
	copy(myset5.begin(), myset5.end(), ostream_iterator<int>(cout, " "));
	printf("\n");


	printf("symmetric_difference result myset6: \n");
	//计算集合的交集集运算
	set_symmetric_difference(myset1.begin(), myset1.end(), myset2.begin(), myset2.end(), inserter(myset6, myset6.begin()));
	copy(myset6.begin(), myset6.end(), ostream_iterator<int>(cout, " "));

	getchar();

	return 0;
}

抱歉!评论已关闭.