C++PrimerエッセイChapter 10関連容器
3416 ワード
1.関連コンテナのタイプ:map(キー-値ペアの集合、関連配列として理解可能)、set(単純なキーの集合)、multimap(1つのキーが複数の値に対応し、キーが一意)、multiset(同じキーが複数であってもよい).
2.pairタイプが提供する操作:
a. pair(T1, T2) p1; 値初期化を使用して、T 1とT 2の2つの要素を持つ空のpairオブジェクトを作成します.
b. pair(T1, T2) p2;2つの要素がT 1とT 2のタイプであるpairオブジェクトを作成します.firstはv 1に初期化され、secondはv 2に初期化されます.
c. make_pair(v1,v2);v 2とv 1で新しいpairオブジェクトを作成
d.p 1
上記のコードでは、次のことが起こります.
(1)word_countの検索キーがAnnaの要素で、見つかりませんでした
(2)word_に新しいキー値を挿入するcountでは、彼のキーはconst stringタイプのオブジェクトで、Annaを保存します.その値は値初期化を採用し、これは本例では値が0であることを意味する.
(3)この新しいキー値ペアをword_に挿入するcount中です.
(4)新しく挿入した要素を読み込み、1に値を付けます.
b.map::insertの使用
(1) m.insert(e); eはm上のalueですtypeタイプの値.キー(e.first)がmにない場合は、e.secondの値を持つ新しい要素を挿入します.キーがmにある場合、mは変わらず、関数は1つを返します.
pairタイプのオブジェクトは、e.fitstをキーにしたい要素のみを含むmap反復器と、その要素が挿入されたかどうかを示すboolタイプである.
(2)m.insert(beg,end)begおよびendは、要素範囲をマークする反復器であり、要素はm.value_でなければならないtypeタイプのキー値ペア、この範囲内のすべての3要素について
(3)m.insert(iter,e)eはmに用いられるvalue_であるtypeタイプの値です.キーがmにない場合は、新しい要素を作成し、反復器iterを起点として新しい要素が格納されている場所を検索します.mに所与のキーを持つ要素を指す反復器を返します.
6.mapの要素を検索して読み込む
a.m.count(k):m中のkの出現回数を返し、mapでは0または1のみ可能
b.find(k):存在する場合は反復器を返し、存在しない場合は末端反復器を超えて戻る
7.mapオブジェクトから要素を削除する
a.m.erase(k):mのキーがkの要素を削除し、size_を返します.typeタイプの値で、削除要素の個数を表します
b.merase(p):反復器pが指す要素をmから削除します.pは、mに確かに存在する要素を指し示さなければならず、m.endに等しくはならない.oidタイプを返す
c.m.erase(b,e):bとeタグの要素を削除し、voidを返します.
8.set、multimap、multiset追加、削除、検索操作:
a.追加:insert(k)set:繰り返しは1回のみ挿入され、multimap、multisetは複数回追加されます
b.削除:erase(k)set:k要素を削除し、multimap、multisetは複数のk一致する要素を削除する可能性がある
c.検索:find()、cout()はそれぞれ要素の位置と要素の個数を返します
d.multimapとmultiset特有の
(1) m.lower_bound(k)は、キーとkの最初の要素を指す反復器を返します.
(2) m.upper_bound(k)は、キーがkより大きい最初の要素を指す反復器を返します.
(3) m.equal_range(k)はpairタイプを返し、pairのfirstメンバーはlower_と等価です.bound(k)、secondメンバーはupper_に等しいbound(k)メンバー
2.pairタイプが提供する操作:
a. pair(T1, T2) p1; 値初期化を使用して、T 1とT 2の2つの要素を持つ空のpairオブジェクトを作成します.
b. pair(T1, T2) p2;2つの要素がT 1とT 2のタイプであるpairオブジェクトを作成します.firstはv 1に初期化され、secondはv 2に初期化されます.
c. make_pair(v1,v2);v 2とv 1で新しいpairオブジェクトを作成
d.p 1
e.p 1==p 2両pairオブジェクトfirstとsecondメンバーが等しい場合、両オブジェクトは等しい.この演算には、要素の==オペレータが使用されます.
f . pq.first:firstという名前のpの共有データメンバーを返し、p.second:secondという名前のpの共有データメンバーを返します.
3.mapオブジェクトの定義:
a.map
b.map
c.map
4.map定義のタイプ
a. map
b. map
c. map
5.mapタイプに要素を追加する
a.下付き文字を使用してmapオブジェクトにアクセスする:
1 map <string , int> word_count;//empty map
2 //insert default initialzed element with key Anna;them assign 1 to its value
3 word_count["Anna"] = 1;
上記のコードでは、次のことが起こります.
(1)word_countの検索キーがAnnaの要素で、見つかりませんでした
(2)word_に新しいキー値を挿入するcountでは、彼のキーはconst stringタイプのオブジェクトで、Annaを保存します.その値は値初期化を採用し、これは本例では値が0であることを意味する.
(3)この新しいキー値ペアをword_に挿入するcount中です.
(4)新しく挿入した要素を読み込み、1に値を付けます.
b.map::insertの使用
(1) m.insert(e); eはm上のalueですtypeタイプの値.キー(e.first)がmにない場合は、e.secondの値を持つ新しい要素を挿入します.キーがmにある場合、mは変わらず、関数は1つを返します.
pairタイプのオブジェクトは、e.fitstをキーにしたい要素のみを含むmap反復器と、その要素が挿入されたかどうかを示すboolタイプである.
(2)m.insert(beg,end)begおよびendは、要素範囲をマークする反復器であり、要素はm.value_でなければならないtypeタイプのキー値ペア、この範囲内のすべての3要素について
(3)m.insert(iter,e)eはmに用いられるvalue_であるtypeタイプの値です.キーがmにない場合は、新しい要素を作成し、反復器iterを起点として新しい要素が格納されている場所を検索します.mに所与のキーを持つ要素を指す反復器を返します.
6.mapの要素を検索して読み込む
a.m.count(k):m中のkの出現回数を返し、mapでは0または1のみ可能
b.find(k):存在する場合は反復器を返し、存在しない場合は末端反復器を超えて戻る
7.mapオブジェクトから要素を削除する
a.m.erase(k):mのキーがkの要素を削除し、size_を返します.typeタイプの値で、削除要素の個数を表します
b.merase(p):反復器pが指す要素をmから削除します.pは、mに確かに存在する要素を指し示さなければならず、m.endに等しくはならない.oidタイプを返す
c.m.erase(b,e):bとeタグの要素を削除し、voidを返します.
8.set、multimap、multiset追加、削除、検索操作:
a.追加:insert(k)set:繰り返しは1回のみ挿入され、multimap、multisetは複数回追加されます
b.削除:erase(k)set:k要素を削除し、multimap、multisetは複数のk一致する要素を削除する可能性がある
c.検索:find()、cout()はそれぞれ要素の位置と要素の個数を返します
d.multimapとmultiset特有の
(1) m.lower_bound(k)は、キーとkの最初の要素を指す反復器を返します.
(2) m.upper_bound(k)は、キーがkより大きい最初の要素を指す反復器を返します.
(3) m.equal_range(k)はpairタイプを返し、pairのfirstメンバーはlower_と等価です.bound(k)、secondメンバーはupper_に等しいbound(k)メンバー