C++ 10.3.6 mapの要素を検索して読み込む


概要
  • mapオブジェクトに対してcountメンバーの戻り値は0または1のみである.mapコンテナは、1つのキーが1つのインスタンスに対応することしか許されないので、countは、1つのキーが存在するかどうかを効果的に示すことができる.countが出現回数を返す
  • find操作は、要素を指す反復器を返し、要素が存在しない場合はend反復器を返します.


  • ============================================================================================
    map<string,int> word_count;
    int occurs = word_count["foobar"];
  • の下付き操作には危険な副作用があります.このキーがmapコンテナにない場合、下付き操作はキーを持つ新しい要素を挿入します.
  • の多くの場合、要素が存在するかどうかを知りたいだけで、挿入演算をしたくありません.
  • mapコンテナは、キーが挿入されずにキーが存在するかどうかを確認するためのcountとfindの2つの操作を提供します.

  • 一、mapの要素を検索して読み取る
    1、countを使用してmapオブジェクトのキーが存在するかどうかをチェックする
  • mapオブジェクトに対してcountメンバーの戻り値は0または1のみである.mapコンテナは、1つのキーが1つのインスタンスに対応することしか許されないので、countは、1つのキーが存在するかどうかを効果的に示すことができる.countは、出現回数
  • を返す
  • multipleコンテナの場合、count戻り値はより多くの用途に使用されます10.5節
  • 戻り値が0でない場合は、mapに新しい要素
  • が挿入される心配がなく、下付きオペレータを使用してキーに関連付けられた値を取得できます.
    int occurs =0 ;
    if(word_count.count("foobar"))
        occurs = word_count["foobar"];
    //  count         ,             。              ,    find   

    2、要素を読み込んで挿入しない-find関数
    1-find操作は、要素を指す反復器を返し、要素が存在しない場合はend反復器を返します.
  • 指定キーを持つ要素が存在する場合は、その要素の参照を取得します.そうしないと、コンテナに新しい要素が作成されません.find
  • を使用します.
    int occurs=0;
    map<string,int>::iterator it=word_count.find("foobar");
    if(it!=word_count.end())
       occurs = it->second;