差集并集

发布时间 2023-09-08 17:30:19作者: Woody_245
#include <iostream>
#include <algorithm>
#include <set>
#include <string>
#include <vector>
#include <utility>

#include <cstdlib>
#include <ctime>
using namespace std;

template<typename T>
void _intersection(const set<T> &a,const set<T> &b,set<T>& res)
{
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), inserter(res, res.begin()));
}

template<typename T>
void _union(const set<T> &a,const set<T> &b,set<T>& res)
{
    set_union(a.begin(), a.end(), b.begin(), b.end(), inserter(res, res.begin()));
}

template<typename T>
void _difference(const set<T> &a,const set<T> &b,set<T>& res)
{
    set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(res, res.begin()));
}

template<typename T>
void _symmetric_differencee(const set<T> &a,const set<T> &b,set<T>& res)
{
    set_symmetric_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(res, res.begin()));
}

template<typename T>
void print(const set<T> &s)
{
    for (auto &it:s)
    {
        cout<<it<<" ";
    }
    cout<<endl;
}

struct concept_table{
    vector<pair<int,int>> item;
    int min_limit;
    int id;
}

bool find(const concept_table& tb,int val)
{
    for (auto &it:tb )
    {
        if (it.first==val)
        {
            return true;
        }
        
    }
    return false;
}
int main()
{
    set<int> srcPart;
    set<int> dstPart;
    
    srcPart.insert(1);
    srcPart.insert(2);
    srcPart.insert(3);
    srcPart.insert(4);
    srcPart.insert(5);
    
    dstPart.insert(3);
    dstPart.insert(4);
    dstPart.insert(5);
    dstPart.insert(6);
    dstPart.insert(7);
    
    set<int> intersection;
    set<int> convergence;
    set<int> diff1;
    set<int> diff2;
    set<int> diff3;

    //_intersection(srcPart,dstPart,intersection);
    _intersection(dstPart,srcPart,intersection);
    //_union(srcPart,dstPart,convergence);
    _union(dstPart,srcPart,convergence);
    _difference(srcPart,dstPart,diff1);
    _difference(dstPart,srcPart,diff2);
    _symmetric_differencee(dstPart,srcPart,diff3);
    
    print(intersection);
    print(convergence);
    print(diff1);
    print(diff2);
    print(diff3);

    set<string> t1;
    set<string> t2;
    set<string> t3;

    string str1;
    string str2;
    auto x=str1<str2;

    concept_table ct1;
    concept_table ct2;
    concept_table ct3;

    for (auto i = 0; i < 1000; i++)
    {
        int randomNum = rand() % 10 + 1;
    }
    
    

    _union(t1,t2,t3);
    
    return 0;
}