[C++入門から放棄-04]C++STLのMultiset


前回はsetについて書きましたが、setセットでは重複するキー値が現れることは許されません.では、この記事では、キー値が重複するノードが存在する場合、どのように処理するかについて説明します.
Multisetはsetと同じで、唯一の違いはmultisetが重複するキー値の挿入を許可することですが、setは許可しません.この違いです.
Multisetもヘッダファイルを宣言する必要があります.#includeは、重複するキー値要素が含まれているため、挿入、削除を行い、要素を検索する場所とsetにはいくつかの違いがあります.
[multiset要素の挿入]
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    multiset<string> ms;  

    ms.insert("abc");  
    ms.insert("123");  
    ms.insert("xyz");  
    ms.insert("456");  
    ms.insert("xxx");  

    multiset<string>::iterator it;  
    for(it = ms.begin(); it != ms.end(); it ++)  
        cout<return 0;   
}  

[multiset要素の削除]erase()メソッドを使用すると、multisetオブジェクトの反復位置の要素、または反復区間の要素を削除できます.キー値が値のすべての反復要素に等しく、clear()メソッドを使用して要素を空にします.
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    multiset<string> ms;  

    ms.insert("abc");  
    ms.insert("123");  
    ms.insert("xyz");  
    ms.insert("456");  
    ms.insert("xxx");  

    multiset<string>::iterator it;  
    for(it = ms.begin(); it != ms.end(); it ++)  
        cout<//    123       ,        1  
    int n = ms.erase("123");  
    cout<<"Total deleted:"<//            
    cout<<"all elements after deleted:"<for(it = ms.begin(); it != ms.end(); it ++)  
        cout<return 0;   
}  

[エレメントの検索]find()メソッドを使用してエレメントを検索し、見つかった場合はエレメントの反復位置を返します(エレメントに重複がある場合は、第1エレメントの反復位置を返します).見つからない場合はend()反復位置を返します.
#include  
#include  
#include  
using namespace std;  

int main()  
{  
    multiset<string> ms;  

    ms.insert("abc");  
    ms.insert("123");  
    ms.insert("xyz");  
    ms.insert("456");  
    ms.insert("xxx");  

    multiset<string>::iterator it;  
    it = ms.find("123");  
    if(it != ms.end())  
        cout<else  
        cout<<"Not find it!"<"nbu");  
    if(it != ms.end())  
        cout<else  
        cout<<"Not find it!"<return 0;   
}  

他と同じsetの部分はここでは紹介しません!考えは同じだ!