C语言到C++STL菜鸟教程:set theory(集合论)与STL集合

2022年7月17日12:54:57编程语言入门到精通评论377 views字数 1908阅读模式

1. 集合论简介

集合论,是数学的一个基本的分支学科,研究对象是一般集合。集合论在数学中占有一个独特的地位,它的基本概念已渗透到数学的所有领域。集合论或集论是研究集合(由一堆抽象物件构成的整体)的数学理论,包含了集合、元素和成员关系等最基本的数学概念。

在我们还在高中教育阶段,可能或多或少会接触到一些诸如集合并交差的运算,而集合论与我们C++的STL运算有很多相似而相同的关系。

2. 集合关系

我们假设有两个集合:

A={2,4,6}

B={1,2,3,4,5}

在数学上

交运算可以写为:C语言到C++STL菜鸟教程:set theory(集合论)与STL集合

 

并运算可以写为:C语言到C++STL菜鸟教程:set theory(集合论)与STL集合

差运算可以写为:C语言到C++STL菜鸟教程:set theory(集合论)与STL集合

我们以该内容为例,进行代码介绍。

3. Algorithm头文件

STL的算法头文件,STL中除了我们常用的这些容器文件以外,还有一个极其重要的头文件,Algorithm,他是我们常用的标准算法的集合,为我们预先封装了我们可能会用到的算法,比如说排序,使用Algorithm头文件中的sort函数可以快速帮我们进行数组排序,以下是实例代码:

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int a[6]={1,5,9,4,6,3};
    sort(a,a+6);        //使用STL的快速排序算法
    for(int i=0;i<6;i++){
        cout<<a[i]<<' ';    
    }
}

4. 集合论与STL集合

在数学上的并运算我们可以使用set_union()函数进行实现,而交运算我们也可以使用set_intersection()函数进行实现,差集则使用set_difference()函数实现,以下是简单的实现代码,这个案例会同时提供一些前面所学的知识,当作一个汇总练习。

#include <iostream>
#include <set>
#include <vector>
#include <algorithm>        //使用算法头文件
using namespace std;
 
int main(){
    set<int> a, b;           //建立两个集合
    vector<int> c;           //建立一个向量,我们用这个向量存储运算结果
    //a = {2,4,6};
    a.insert(2);
    a.insert(4);
    a.insert(6);
    //b = {1,2,3,4,5};
    b.insert(1);
    b.insert(2);
    b.insert(3);
    b.insert(4);
    b.insert(5);
 
    set_union(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c));//并集
    for(vector<int>::iterator it=c.begin();it!=c.end();it++){
        cout<< *it << ' ';
    }
    cout<<endl;
    c.clear();
 
 
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c));//交集
    for(vector<int>::iterator it=c.begin();it!=c.end();it++){
        cout<< *it << ' ';
    }
    cout<<endl;
    c.clear();
 
    set_difference(a.begin(), a.end(), b.begin(), b.end(), back_inserter(c)); //差集 从B中减去A包含的元素
    for(vector<int>::iterator it=c.begin();it!=c.end();it++){
        cout<< *it << ' ';
    }
    cout<<endl;
    c.clear();
 
    return 0;
}

可以见的,以上的三个函数,其使用方法均是第一个集合开始到结束,第二个集合开始到结束,然后使用back_inserter插入器将数据插入到某一个向量或者其他容器之中,并交差是我们集合运算中的最基本的运算,有了这几种运算,我们可以构建出非常多的集合论中的各种功能,以达到我们的数学功能。

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/25124.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定