zoukankan      html  css  js  c++  java
  • set_union&&set_intersection

    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include<stdio.h>
    using namespace std;
    
    int main () {
      int first[] = {5,10,15,20,25};
      int second[] = {50,40,30,20,10};
      vector<int> v(10);
      printf("%d
    ",v.size());                                  // 0  0  0  0  0  0  0  0  0  0
      vector<int>::iterator it;
    
      sort (first,first+5);     //  5 10 15 20 25
      sort (second,second+5);   // 10 20 30 40 50
    
      it=set_union (first, first+5, second, second+5, v.begin());
                                                   // 5 10 15 20 25 30 40 50  0  0
      cout << "union has " << int(it - v.begin()) << " elements.
    ";
      
      for(int i=0;i<10;i++)printf("%d
    ",v[i]);
      return 0;
    }

    10
    union has 8 elements.
    5
    10
    15
    20
    25
    30
    40
    50
    0
    0

    所以我们可以的出的结论就是set_union要想往vector里面添加数据首先还是应该先排序的,还有就是要申请足够的内存空间。

    int main()
    {
        set<int> a,b,c;
        a.insert(1);
        a.insert(6);
        a.insert(6);
        b.insert(2);
        b.insert(6);
        b.insert(9);
    
        //最后一个参数若使用c.begin()会产生编译错误assignment of read-only localtion.
    
        set_union(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
        return 0;
    }
    

      

    int main()
    {
        vector<int> a,b,c;
    
        b.push_back(2);
        b.push_back(1);
        b.push_back(1);
        b.push_back(1);
        //最后一个参数若使用c.begin(),运行时会出错“Segmentation fault (core dumped)”.
        sort(a.begin(),a.end());
        sort(b.begin(),b.end());
        set_union(a.begin(),a.end(),b.begin(),b.end(),back_inserter(c));
        printf("%d
    ",c.size());
        for(int i=0;i<c.size();i++)printf("%d
    ",c[i]);
        return 0;
    }
    这个的用法就很像数组的用法,但是不同是加了back_inserter(c);

     back_inserter一个成员函数,返回值是back_insert_iterator, 本质上是push_back进行操作的, 返回值back_insert_iterator, 并实现其自增.

       所以在数组的时候也是可以用这个函数的,然后就不同返回迭代器的值了,感觉还是有点方便的啊。

    set_intersection  这个东西大体上还是和set_union差不多的,但是唯一的不同就是一个并集一个交集,还有就是如果某个数在两个集合里面都出现了,那就输出出现的次数最少的。

  • 相关阅读:
    OC学习一周总结
    C语言基础学习总结
    123
    汇编中中括号[]作用以及lea和mov指令的区别
    C#获取局域网内所有的SQL Server服务器名
    .net 初中级程序员招聘
    C#在客户端与 JS 交互
    [ZT]Mac下安装mysql和workbench
    Eclipse文件夹导入Jar
    Tomcat配置后提示404的解决办法
  • 原文地址:https://www.cnblogs.com/Heilce/p/6873677.html
Copyright © 2011-2022 走看看