STL - 容器 - UnorderedSet(一)

一些简单操作

UnorderedSetTest.cpp

#include <unordered_set>
#include <numeric>
#include "../../Core/print.hpp"
#include "UnorderedSetTest.h"

using namespace std;

void UnorderedSetTest::simpleOperation()
{
    // create and initialize unordered set
    unordered_set<int> coll = { 1, 2, 3, 5, 7, 11, 13, 17, 19, 77 };

    // print elements
    // - elements are in arbitrary order
    PRINT_ELEMENTS(coll);

    // insert some additional elements
    // - might cause rehashing and create different order
    coll.insert({ -7, 17, 33, -11, 17, 19, 1, 13 });
    PRINT_ELEMENTS(coll);

    // remove element with specific value
    coll.erase(33);

    // insert sum of all existing values
    coll.insert(accumulate(coll.begin(), coll.end(), 0));
    PRINT_ELEMENTS(coll);

    // check if value 19 is in the set
    if (coll.find(19) != coll.end()) 
    {
        cout << "19 is available" << endl;
    }

    // remove all negative values
    unordered_set<int>::iterator pos;
    for (pos = coll.begin(); pos != coll.end();) 
    {
        if (*pos < 0) {
            pos = coll.erase(pos);
        }
        else {
            ++pos;
        }
    }

    PRINT_ELEMENTS(coll);
}

void UnorderedSetTest::run()
{
    printStart("simpleOperation()");
    simpleOperation();
    printEnd("simpleOperation()");
}

运行结果:

---------------- simpleOperation(): Run Start ----------------
17 1 2 19 11 3 77 13 5 7
17 1 2 19 11 3 77 13 5 7 -7 33 -11
17 1 2 19 11 3 77 13 5 7 -7 -11 137
19 is available
17 1 2 19 11 3 77 13 5 7 137
---------------- simpleOperation(): Run End ----------------

posted @ 2015-11-26 16:14  Master HaKu  阅读(2352)  评论(1编辑  收藏  举报