マップにキーの値が含まれているかどうかを判断しますか?

マップがマルチマップでない限り、最も洗練された方法の 1 つは count メソッドを使用することです

if (m.count(key))
    // key exists

要素が実際にマップに存在する場合、カウントは 1 になります。


いいえ。stl マップ クラスでは、::find() を使用します。 マップを検索し、返されたイテレータを std::map::end() と比較します

そう

map<int,Bar>::iterator it = m.find('2');
Bar b3;
if(it != m.end())
{
   //element found;
   b3 = it->second;
}

明らかに、独自の getValue() を書くことができます 必要に応じてルーチン (C++ でも out を使用する理由はありません) ) ですが、 std::map::find() の使い方に慣れたら、 時間を無駄にしたくありません。

コードも少し間違っています:

m.find('2'); '2' であるキー値のマップを検索します . IIRC C++ コンパイラは暗黙のうちに '2' を int に変換します。その結果、'2' の ASCII コードの数値が望ましくありません。

この例のキータイプは int なので 次のように検索します:m.find(2);


C++20 では

bool std::map::contains( const Key& key ) const;

マップがキー key を持つ要素を保持している場合、true を返します .