STL - 容器 - Set

Set根据特定排序准则,自动将元素排序。

Set不允许元素重复。

一些常规操作:

SetTest.cpp

#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
#include <functional>
#include "SetTest.h"

using namespace std;

void SetTest::operationDemo()
{
    // type of the collection:
    // - no duplicates
    // - elements are integral values
    // - descending order
    set<int, greater<int>> coll1;

    // insert elements in random order using different member functions
    coll1.insert({ 4, 3, 5, 1, 6, 2 });
    coll1.insert(5);

    // print all elements
    for (int elem : coll1) 
    {
        cout << elem << ' ';
    }
    cout << endl;

    // insert 4 again and process return value
    auto status = coll1.insert(4);
    if (status.second) 
    {
        cout << "4 inserted as element "
            << distance(coll1.begin(), status.first) + 1 << endl;
    }
    else 
    {
        cout << "4 already exists" << endl;
    }

    // assign elements to another set with ascending order
    set<int> coll2(coll1.cbegin(), coll1.cend());

    // print all elements of the copy using stream iterators
    copy(coll2.cbegin(), coll2.cend(), ostream_iterator<int>(cout, " "));
    cout << endl;

    // remove all elements up to element with value 3
    coll2.erase(coll2.begin(), coll2.find(3));

    // remove all elements with value 3
    int num;
    num = coll2.erase(3);
    cout << num << " element(s) removed" << endl;

    // print all elements
    copy(coll2.cbegin(), coll2.cend(), ostream_iterator<int>(cout, " "));
    cout << endl;
}

void SetTest::run()
{
    printStart("operationDemo()");
    operationDemo();
    printEnd("operationDemo()");
}

运行结果:

---------------- operationDemo(): Run Start ----------------
6 5 4 3 2 1
4 already exists
1 2 3 4 5 6
1 element(s) removed
4 5 6
---------------- operationDemo(): Run End ----------------

转载于:https://www.cnblogs.com/davidgu/p/4899069.html

猜你喜欢

转载自blog.csdn.net/weixin_34235457/article/details/93803032