1. 程式人生 > >multiset多重集合容器

multiset多重集合容器

multiset與set一樣,唯一的不同是:multiset允許重複元素的鍵值插入,而set不允許

同樣是set標頭檔案

multiset元素插入(輸入多個以後,輸出按照從小到大的順序)

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
    multiset<string> ms;
    ms.insert("abc");
    ms.insert("123");
    ms.insert("1a1");
    ms.insert("aaa");
    ms.insert("123");
    ms.insert("1b0");
    multiset<string>::iterator it;
    for(it=ms.begin();it!=ms.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}

multiset元素刪除:可以使用clear()

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
    multiset<string> ms;
    ms.insert("abc");
    ms.insert("123");
    ms.insert("123");
    ms.insert("1a1");
    ms.insert("aaa");
    ms.insert("123");
    ms.insert("1b0");
    multiset<string>::iterator it;
    for(it=ms.begin();it!=ms.end();it++)
    {
        cout<<*it<<endl;
    }
    int n=ms.erase("123");//刪除值為“123”的所有重複元素,返回刪除元素總數
    cout<<n<<endl;
    for(it=ms.begin();it!=ms.end();it++)//輸出刪除後的元素
    {
        cout<<*it<<endl;
    }
    return 0;
}

查詢元素:使用find()方法查詢元素,找到返回該元素迭代器位置

(如果重複,返回第一個元素重複元素的迭代器位置)

如果沒有,返回end()迭代器位置

注:迭代器不能輸出位置,只能輸出內容

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
    multiset<string> ms;
    ms.insert("abc");
    ms.insert("123");
    ms.insert("123");
    ms.insert("1a1");
    ms.insert("aaa");
    ms.insert("123");
    ms.insert("1b0");
    multiset<string>::iterator it;
    it=ms.find("123");//查詢鍵值“123”
    if(it!=ms.end())
    {
        cout<<*it<<endl;
    }
    else
    {
        cout<<"not find it"<<endl;
    }
    it=ms.find("bbb");
    if(it!=ms.end())
    {
        cout<<*it<<endl;
    }
    else
    {
        cout<<"not find it"<<endl;
    }
    return 0;
}