瞎写的。。。。

queue 优先队列的模板
//#include <queue>
//#include <cstdio>
//#include <algorithm>
//using namespace std;
//priority_queue < int,vector<int>,less<int> >q1;//降序
//priority_queue< int ,vector<int> ,greater<int> >q2;//升序
//priority_queue< int >q3;//降序
struct node
{
    public:
    int alpha,beta;
    node( int  x,int y){alpha=x;beta=y;}
    void setx(int x){alpha=x;}
    void sety(int y){beta=y;}
    bool operator < ( const node &p)  const
    {
//        return alpha==p.alpha?beta<p.beta:alpha>p.alpha;//小根堆,升序排列
        return alpha==p.alpha?beta<p.beta:alpha<p.alpha;//大根堆,降序排列

    }
};
//class  node
//{
//
//    public:
//    int alpha,beta;
//    node(){}
//    node (int x ,int y):alpha(x),beta(y){}
//    bool operator < ( const node &a) const {
//      return alpha<a.alpha;
//    }
//};
//
//int main()
//{
     priority_queue < int, vector<int> ,less<int> >qa;//降序
     priority_queue < int, vector<int> ,greater<int> >qb;//升序
     priority_queue<int> qc;//降序
//     priority_queue<node> q;
//     q.push(node(1,1));
//     q.push(node(2,2));
//     q.push(node(3,3));
//    while(!q.empty()){        //输出的方法
//        printf("%d %d \n",q.top().alpha,q.top().beta);
//        q.pop();
//    }
//}
#include <set>
#include <cstdio>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
set<int, greater<int> > s1;//降序
set< int , less<int> > s2;//升序
set< int > s;//默认升序排列
set<int > ss;
set<int > result;
vector<int > v;
int main()
{
     int n,m;
    while(scanf("%d",&n)!=EOF)
        s.insert(n);
    while(scanf("%d",&m)!=EOF)
        ss.insert(m);
//         scanf("%d",&n);
//      for(int  i=0;i<n;i++)
//          scanf("%d",v[i]);
//      set<int> ::iterator it;
//    for(it=s.begin();it!=s.end();it++)
        printf("%d\n",*it);
//   {
//       printf("%d\n",*lower_bound(s.begin(),s.end(),5));

        set_intersection(s.begin(),s.end(),ss.begin(),ss.end(),back_inserter(v));
        set <int> ::iterator it;//交集
//        for(int i=0;i<2;i++)
//            printf("%d ",v[i]);
      printf("交集:\n");
      for(int n: v)  printf("%d ",n);//*****神奇的用法
      printf("\n");
        v.clear();
        printf("并集:\n");
      set_union(s.begin(),s.end(),ss.begin(),ss.end(),back_inserter(v));
       for(int n: v)  printf("%d ",n);
       printf("\n");
       v.clear();
       printf("差集(s-ss):\n");
      set_difference(s.begin(),s.end(),ss.begin(),ss.end(),back_inserter(v));
      for(int n : v)  printf("%d ",n);
        printf("\n");
       v.clear();
        printf("差集(ss-s):\n");
      set_difference(ss.begin(),ss.end(),s.begin(),s.end(),back_inserter(v));
      for(int n :v)  printf("%d ",n);
}
//begin() 返回指向第一个元素的迭代器
//clear() 清除所有元素
//count() 返回某个值元素的个数
//empty() 如果集合为空,返回true(真)
//end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
//equal_range() 返回集合中与给定值相等的上下限的两个迭代器
//erase() 删除集合中的元素
//find() 返回一个指向被查找到元素的迭代器
//get_allocator() 返回集合的分配器
//insert() 在集合中插入元素
//lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
//key_comp() 返回一个用于元素间值比较的函数
//max_size() 返回集合能容纳的元素的最大限值
//rbegin() 返回指向集合中最后一个元素的反向迭代器
//rend() 返回指向集合中第一个元素的反向迭代器
//size() 集合中元素的数目
//swap() 交换两个集合变量
//upper_bound() 返回大于某个值元素的迭代器
//value_comp() 返回一个用于比较元素间的值的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值