MultiSet根据特定排序准则,自动将元素排序。
MultiSet允许元素重复。
一些常规操作:
MultiSetTest.cpp
#include <iostream> #include <set> #include <algorithm> #include <iterator> #include <functional> #include "MultiSetTest.h" using namespace std; void MultiSetTest::operationDemo() { // type of the collection: // - duplicates allowed // - elements are integral values // - descending order multiset<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 ipos = coll1.insert(4); cout << "4 inserted as element " << distance(coll1.begin(), ipos) + 1 << endl; // assign elements to another multiset with ascending order multiset<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 5 int num; num = coll2.erase(5); cout << num << " element(s) removed" << endl; // print all elements copy(coll2.cbegin(), coll2.cend(), ostream_iterator<int>(cout, " ")); cout << endl; } void MultiSetTest::run() { printStart("operationDemo()"); operationDemo(); printEnd("operationDemo()"); }
运行结果:
---------------- operationDemo(): Run Start ----------------
6 5 5 4 3 2 1
4 inserted as element 5
1 2 3 4 4 5 5 6
2 element(s) removed
3 4 4 6
---------------- operationDemo(): Run End ----------------