1.set_union
计算并集
将两个集合合并成一个集合,但是要求输入的两个集合必须是有序的
set_union(arr1, arr1+n1, arr2, arr2+n2, arr3)-arr3;
int arr1[3]={1,2,3};
int arr2[3]={2,3,4};
int arr3[4];
int n = set_union(arr1, arr1+n1, arr2, arr2+n2, arr3)-arr3;
\\ arr3结果为{1,2,3,4}, n结果为4
2.set_intersection
将两个集合交成一个集合,输入的两个集合必须是有序的
int arr1[3]={1,2,3};
int arr2[3]={2,3,4};
int arr3[2];
int n = set_intersection(arr1, arr1+n1, arr2, arr2+n2, arr3)-arr3;
\\ arr3结果为{2,3}
n结果为2
3.set_difference 给定两个有序数组arr1和arr2,计算arr1-arr2的差集,然后存在数组arr3中,并返回差集大小
set_difference(int *arr1, int n1, int *arr2, int n2, int *arr3);
int Set_Difference(int *arr1, int n1, int *arr2, int n2, int *arr3)
{
sort(arr1,arr1+n1);
sort(arr2,arr2+n2);
int n=set_difference(arr1,arr1+n1,arr2,arr2+n2,arr3)-arr3;
return n;
}