蓝桥杯 集合运算

题目

给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。

运用set集合

set集合的一些常见操作

set<int> q;     //以int型为例 默认按键值升序
set<int,greater<int>> p;  //降序排列 
int x;
q.insert(x);	//将x插入q中
q.erase(x);		//删除q中的x元素,返回0或1,0表示set中不存在x
q.clear();		//清空q
q.empty();		//判断q是否为空,若是返回1,否则返回0
q.size();		//返回q中元素的个数
q.find(x);		//在q中查找x,返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即 q.end()
q.lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素
q.upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素

q.rend();		  //返回第一个元素的的前一个元素迭代器
q.begin();		  //返回指向q中第一个元素的迭代器

q.end();		 //返回指向q最后一个元素下一个位置的迭代器
q.rbegin();		 //返回最后一个元素

题目解答

定义迭代器是一个指针。

count函数返回元素出现次数0或1。

set集合里元素默认不同且升序,如果插入相同的元素也会插入失败。

#include<iostream>
#include<set>
using namespace std;

void output(set<int> s)
{
    for(set<int>::iterator i=s.begin();i!=s.end();i++)
    {
        cout<<*i<<" ";
    }
    cout<<endl;
}

set<int> s1,s2,s3,s4,s5;
int main()
{
    int n,m;
    int x;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        s1.insert(x);
        s4.insert(x);
        s5.insert(x);
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>x;
        s2.insert(x);
        s4.insert(x);
        if(s1.count(x)==1)
            s5.erase(x),s3.insert(x);
    }
    output(s3);
    output(s4);
    output(s5);
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值