STL - 容器 - MultiSet

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 ----------------

 

posted @ 2015-10-22 09:55  Master HaKu  阅读(233)  评论(0编辑  收藏  举报