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

e.p 1==p 2両pairオブジェクトfirstとsecondメンバーが等しい場合、両オブジェクトは等しい.この演算には、要素の==オペレータが使用されます.
    f . pq.first:firstという名前のpの共有データメンバーを返し、p.second:secondという名前のpの共有データメンバーを返します.
3.mapオブジェクトの定義:
a.mapmは、mという名前の空のmapオブジェクトを作成し、そのキーと値のタイプはそれぞれkと
b.mapm(m 2)m 2のコピーを作成し、mとm 2は同じキー値タイプでなければならない
c.mapm(b,e)mapタイプのオブジェクトmを作成し、反復器bおよびeタグの範囲内のすべての要素のコピーを格納する.要素タイプはpairに変換できる必要があります.
4.map定義のタイプ
    a. map::key_type mapコンテナで、インデックスキーのタイプをします
    b. map::mapped_type mapコンテナで、キーに関連付けられた値のタイプ
    c. map::value_typeはfirst要素がconst map::key_を有するpairタイプです.typeタイプ、second要素はmap::mapped_typeタイプ
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)メンバー