PS:http://blog.sina.com.cn/s/blog_65b1f1ed01012577.html
C++集合运算函数总结
集合A,B。(可以使用数组、list、vector)
头文件:#include<algorithm>
前提:两个集合已经有序。
merge() //归并两个序列,元素总个数不变,只是将两个有序序列归并为一个有序序列。
set_union() //实现求集合A,B的并。
set_difference()//实现求集合A,B的差(即A—B)
set_symmetric_difference()//实现求集合A,B的对称差(即(A-B)并(B-A))
set_intersection()//实现求集合A,B交集。
//集合运算
//熊八八
//2013-3-15
#include<iostream>
#include<stdio.h>
#include<list>
#include<algorithm> //set_union求并集
using namespace std;
template<class T>
void Print(T List)
{
class T::iterator iter;
for(iter=List.begin(); iter!=List.end(); iter++)
printf("%d ", *iter);
printf("\n");
}
int main()
{
list<int> List_A;
list<int> List_B;
int temp;
printf("Enter 5 integers into List_A:\n");
for(int i=0; i<5; i++)
{
scanf("%d", &temp);
List_A.push_back(temp);
}
//printf("Enter some integers into List_B:\n");
for(int i=0; i<5; i++)
{
scanf("%d", &temp);
List_B.push_back(temp);
}
List_A.sort();
List_B.sort();
list<int> List_C(10);
//不能将操作后的结果重新放入List_A或者List_B.如果非要如此,可以设一中间变量List_C,先将结果存储至List_C,然后List_A = List_C
//merge(List_A.begin(), List_A.end(), List_B.begin(), List_B.end(), List_C.begin()); //合并
//set_union(List_A.begin(), List_A.end(), List_B.begin(), List_B.end(), List_C.begin());//并集
//set_difference(List_A.begin(), List_A.end(), List_B.begin(), List_B.end(), List_C.begin());//差集
//set_symmetric_difference(List_A.begin(), List_A.end(), List_B.begin(), List_B.end(), List_C.begin());//对称差
set_intersection(List_A.begin(), List_A.end(), List_B.begin(), List_B.end(), List_C.begin());//交集
printf("List_A contains:\n");
Print(List_A);
printf("List_B contains:\n");
Print(List_B);
printf("List_C contains:\n");
Print(List_C);
system("pause");
return 0;
}