zoukankan      html  css  js  c++  java
  • c++ set_union set_intersection使用

    自定义类型也可以构造set,但同样必须定义“小于”运算符,set中的元素从小到大排列好了

    #include<iostream>
    #include<string>
    #include <set>
    #include <algorithm>
    using namespace std;
    int main(){
    set<int>a;
    set<int>b;
    set<int>x;
    x.insert(1);
    x.insert(2);
    a.insert(5);
    a.insert(6);
    a.insert(7);
    b.insert(4);
    b.insert(6);
    b.insert(8);
    set<int>::iterator ip;
    for(ip=a.begin();ip!=a.end();ip++){
    cout << "A的集合为" << *ip;
    }cout << endl;
    for(ip=b.begin();ip!=b.end();ip++){
    cout << "B的集合为" << *ip;
    }cout << endl;
    //目标集合X 从哪个位置插入 x.begin()从x的头开始插入
    set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
    for(ip=x.begin();ip!=x.end();ip++){
    cout << "并集:" << *ip;
    }cout << endl;


    x.clear() ;


    set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
    for(ip=x.begin();ip!=x.end();ip++){
    cout << "交集:" << *ip;
    }
    cout << endl;

    x.clear();


    set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
    for(ip=x.begin();ip!=x.end();ip++)
    cout << "差集:" <<*ip;
    cout <<endl; return 0;
    }

     --------------------------------------------------------------------------

    // set_intersection example
    #include <iostream> // std::cout
    #include <algorithm> // std::set_intersection, std::sort
    #include <vector> // std::vector

    int main () {
    int first[] = {5,10,15,20,25};
    int second[] = {50,40,30,20,10};
    std::vector<int> v(10); // 0 0 0 0 0 0 0 0 0 0
    std::vector<int>::iterator it;

    std::sort (first,first+5); // 5 10 15 20 25
    std::sort (second,second+5); // 10 20 30 40 50

    it=std::set_intersection (first, first+5, second, second+5, ++v.begin());
    // 10 20 0 0 0 0 0 0 0 0
    v.resize(it-v.begin()); // 10 20

    std::cout << "The intersection has " << (v.size()) << " elements: ";
    for (it=v.begin(); it!=v.end(); ++it)
    std::cout << ' ' << *it;
    std::cout << ' ';

    return 0;
    }

    ------------------------

    #include <algorithm>
    #include <iostream>
    #include <functional>
    #include <cstring>
    using namespace std;
    int main() {
    char *Alphabet = "abcdefghijklmnopqrstuvwxyz" ;
    char *Vowels = "aeiou" ;
    char *AlphaNum = "0123456789abcdef" ;
    char result[45] ;
    char *last ;

    int lenA = strlen(Alphabet) ;
    int lenV = strlen(Vowels ) ;
    int lenAN = strlen(AlphaNum) ;

    cout << "Alphabet = " << Alphabet << endl ;
    cout << "Vowels = " << Vowels << endl ;
    cout << "AlphaNum = " << AlphaNum << endl ;

    cout << " using non-predicate versions" << endl ;

    //non-predicate set_difference
    last = set_difference(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result) ;
    *last = 0 ;
    cout << "set_difference(Alphabet, AlphaNum) = " << result << endl ;

    //non-predicate set_intersection
    last = set_intersection(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result) ;
    *last = 0 ;
    cout << "set_intersection(Alphabet, AlphaNum) = " << result << endl ;

    //non-predicate set_symmetric_difference
    last = set_symmetric_difference(Alphabet, Alphabet+lenA,
    Vowels , Vowels +lenV,
    result) ;
    *last = 0 ;
    cout << "set_symmetric_difference(Alphabet, Vowels) = " << result << endl ;

    //non-predicate set_union
    last = set_union(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result) ;
    *last = 0 ;
    cout << "set_union(Alphabet, AlphaNum) = " << result << endl ;

    cout << " using predicate versions" << endl ;

    //predicate set_difference
    last = set_difference(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result , less<char>()) ;
    *last = 0 ;
    cout << "set_difference(Alphabet, AlphaNum) = " << result << endl ;

    //predicate set_intersection
    last = set_intersection(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result , less<char>()) ;
    *last = 0 ;
    cout << "set_intersection(Alphabet, AlphaNum) = " << result << endl ;

    //predicate set_symmetric_difference
    last = set_symmetric_difference(Alphabet, Alphabet+lenA,
    Vowels , Vowels +lenV,
    result , less<char>()) ;
    *last = 0 ;
    cout << "set_symmetric_difference(Alphabet, Vowels) = " << result << endl ;

    //predicate set_union
    last = set_union(Alphabet, Alphabet+lenA,
    AlphaNum, AlphaNum+lenAN,
    result , less<char>()) ;
    *last = 0 ;
    cout << "set_union(Alphabet, AlphaNum) = " << result << endl ;

    return 0 ;
    }

  • 相关阅读:
    mysql版本问题
    敏感词过滤
    身份证校验-----15位,18位后端
    身份证号校验---------前端
    layui时间显示
    第一次入坑docker
    mysql索引解析
    mysql数据库索引调优
    设计模式-代理模式
    c#中abstract与virtua、overridel的用法
  • 原文地址:https://www.cnblogs.com/is-Tina/p/7350847.html
Copyright © 2011-2022 走看看