stl之set使用.cpp

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

int main()
{
//定义模板类对象s1
    set 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 ::iterator it = s1.find(21);
//s8是从s1的首位(包含)到it(不包含)的集合,这里说s1的集合是指已经排序后的集合
    set 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 s9 = s1;
    cout << "-------------------------------" << endl;
        cout << "s9 = : ";
    for (auto& m : s9) {
        cout << m << " ";
    }
    cout << endl;

    set s2 = {1, 11, 40, 6, 98, 71, 17};
    
    cout << "-------------------------------" << endl;
    cout << "取交集 : ";
    set 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 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 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 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 s7;
    set_symmetric_difference(s2.begin(), s2.end(), s1.begin(), s1.end(), inserter(s7, s7.begin()));
    for (int m : s7) {
        cout << m << " ";
    }
    cout << endl;
}

你可能感兴趣的:(编程)