一些简单操作
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 ----------------