複数のC ++テンプレートコレクション
マルチセット(複数のセット)プログラムは、データのセットを格納すること。同様のコレクションとのリストは、複数の要素は、しかし、重複したデータを含むことができる集合型マルチクラスのセットとは異なる、データ・ストアとして設定してもよいし、鍵データとして使用することができます。
C「」----セットコレクションクラステンプレートについて学ぶ++テンプレートコレクション
方法マルチセットの多重集合のクラステンプレートを作成します。
#include<set> //调用set头文件
...
...
multiset<int>m; //定义一个multiset
//multiset表示声明一个多重集合类模板,<type>表示集合的类型,m表示集合名。
ファンクションの主要メンバーを対象と多重集合:
ただ、いくつかの一般的なのは、他の多くのがあります。
機能 | 説明 |
---|---|
ベギン | セット反復子の最初の要素へのポインタを返します。 |
終わり | コレクションの最後の要素へのポインタを返すイテレータ |
サイズ | コレクションのサイズを返します。 |
晴れ | コレクション内のすべての要素を削除します。 |
カウント(x)は、 | 戻り値設定値xの要素数 |
(X)を見つけます | 戻り値xにイテレータへのポインタ、xが存在しない場合は、エンド・リターン |
消去(開始、終了) | の範囲内の開始から終了まで削除ベクターイテレータ |
消去(I) | イテレータのi番目の要素を削除します。 |
挿入(I、X) | 値iは反復子によって示される第1の位置に挿入され、xは |
挿入(I、開始、終了) | 反復子は、i番目の位置に指定された範囲の開始から終了までの要素内に挿入されます |
インサート(I、N、X) | i番目の位置にxのn個のコピーが反復子によって示され |
スワップ(セット) | 2つのコレクションの内容を入れ替え |
これは、コレクションが割り当てられ、インデックスを介して入力して出力することができないことは注目に値します。
イテレータ
マルチセットコレクションの様々な要素へのアクセスは、通常、イテレータを使用します。
イテレータの定義方法:
multiset<int>::iterator it=m.begin();
反復子はマルチセットの点mに設定された開始ポインタを定義します。
アプリケーションにイテレータの多重集合セットの取得
挿入
multiset<int>m;
m.insert(1);m.insert(3);m.insert(5);
m.insert(7);m.insert(9);m.insert(11);
multiset<int>::iterator it;
for(it=m.begin();it!=m.end();it++)
cout<<*it<<" ";
、あなたを与える説明するために、
最初の操作を6回繰り返して挿入し、int型の多重集合mのセットを定義します。
それは、それがヘッド・ポインタのm個の点を初期化するために()をm.begin =イテレータを定義します。
そして、それによって出力mのすべての要素をトラバース++。
出力は次のようになります。1357911
ループ終了条件があるため!= M.end()、そのノートがm.endを()=とき、それは次の空の要素mに最後の要素ではなく、最後の要素を指します。
削除
操作が実行され続け、インサート着手
m.erase(--it);
for(it=m.begin();it!=m.end();it++)
cout<<*it<<" ";
( - -it)m.eraseによって、最後の元素Mを除去、
出力は:13579
検索操作
検索操作の検索再訪するには:
検索(X)は、Xが存在しない場合は、最後に返され、Xを指すイテレータを返します。
より多くの挿入、削除を行います。
it=m.find(5);
if(it!=m.end())
cout<<"found"<<endl;
else
cout<<"not found"<<endl;
it=m.find(13);
if(it!=m.end())
cout<<"found"<<endl;
else
cout<<"not found"<<endl;
出力は次のようになります。
見つかり
見つかりません
トリプル出典:
#include<iostream>
#include<set>
using namespace std;
int main(){
multiset<int>m;
m.insert(1);m.insert(3);m.insert(5);
m.insert(7);m.insert(9);m.insert(11);
multiset<int>::iterator it;
for(it=m.begin();it!=m.end();it++)
cout<<*it<<" ";
cout<<endl;
m.erase(--it);
for(it=m.begin();it!=m.end();it++)
cout<<*it<<" ";
cout<<endl;
it=m.find(5);
if(it!=m.end())
cout<<"found"<<endl;
else
cout<<"not found"<<endl;
it=m.find(13);
if(it!=m.end())
cout<<"found"<<endl;
else
cout<<"not found"<<endl;
}
図は、結果: