C++集合运算函数总结-merge、set_union、set_difference、set_symmetric_difference、set_intersection

来源:互联网 发布:正归淘宝店加盟 编辑:程序博客网 时间:2024/05/16 04:46

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;
}

 


set容器使用时这样比较常用吧

            set_intersection(x.begin(), x.end(), y.begin(), y.end(), inserter(z, z.end()));
            ....

0 0
原创粉丝点击