您的位置:首页 > 其它

STL - 容器 - Set

2015-10-21 20:56 387 查看
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 ----------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: