stl之set使用.cpp

/*标砖模板库(stl)之集合(set)
 *set是一系列相同类型数据的集合,具有自动排序功能
 * */
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;

int main()
{
//定义模板类对象s1
    set<int> s1 = {40, 11, 32, 21, 17, 50};
    cout << "-------------------------------" << endl;
    cout << "size = " << s1.size() << endl;
    cout << "s1 = : ";
//范围for循环遍历
    for (auto& m : s1) {
        cout << m << " ";
    }
    cout << endl;
//定义迭代器
    set <int> ::iterator it = s1.find(21);
//s8是从s1的首位(包含)到it(不包含)的集合,这里说s1的集合是指已经排序后的集合
    set<int> s8(s1.begin(), it);
    cout << "-------------------------------" << endl;
    cout << "s8 = : ";
    for (auto& m : s8) {
        cout << m << " ";
    }
    cout << endl;

    s1.insert(35);//在s1中插入35
    s1.erase(11);//在s1中删除11
    s1.insert(35);//在s1中再次插入35,此时系统默认忽略
    cout << "-------------------------------" << endl;
    cout << "s1 = : ";
    for (auto& m : s1) {
        cout << m << " ";
    }
    cout << endl;

    set<int> s9 = s1;
    cout << "-------------------------------" << endl;
        cout << "s9 = : ";
    for (auto& m : s9) {
        cout << m << " ";
    }
    cout << endl;

    set<int> s2 = {1, 11, 40, 6, 98, 71, 17};
    
    cout << "-------------------------------" << endl;
    cout << "取交集 : ";
    set<int> s3;
    set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(s3, s3.begin()));
    for (int m : s3) {
        cout << m << " ";
    }
    cout << endl;

    cout << "-------------------------------" << endl;
    cout << "取并集 : ";
    set<int> s4;
    set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(s4, s4.begin()));
    for (int m : s4) {
        cout << m << " ";
    }
    cout << endl;


    cout << "-------------------------------" << endl;
    cout << "取差集 s1 - s2: ";
    set<int> s5;
    set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(s5, s5.begin()));
    for (int m : s5) {
        cout << m << " ";
    }
    cout << endl;


    cout << "-------------------------------" << endl;
    cout << "取差集 s2 - s1: ";
    set<int> s6;
    set_difference(s2.begin(), s2.end(), s1.begin(), s1.end(), inserter(s6, s6.begin()));
    for (int m : s6) {
        cout << m << " ";
    }
    cout << endl;


    cout << "-------------------------------" << endl;
    cout << "取对称差集: ";//即除去相同的元素,剩下的所有元素的集合
    set<int> s7;
    set_symmetric_difference(s2.begin(), s2.end(), s1.begin(), s1.end(), inserter(s7, s7.begin()));
    for (int m : s7) {
        cout << m << " ";
    }
    cout << endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值