C++ のマップにキーが存在するかどうかを確認する
- 
          
            std::map::find関数を使用して、C++ マップにキーが存在するかどうかを確認する
- 
          
            std::map::count関数を使用して、C++ マップにキーが存在するかどうかを確認する
- 
          
            std::map::contains関数を使用して、C++ マップにキーが存在するかどうかを確認する
 
この記事では、C++ のマップにキーが存在するかどうかを確認する方法を紹介します。
std::map::find 関数を使用して、C++ マップにキーが存在するかどうかを確認する
    
std::map コンテナは、並べ替えて保存されたキーと値のペアの連想データ構造であり、各要素には一意のキーがあります。一方、STL は、std::unordered_map という名前の同じコンテナのソートされていないバージョンも提供します。これらのコンテナは両方とも、以下で説明するキー検索方法をサポートしています。
find は、std::map コンテナの組み込み関数の 1つであり、対応するキー値の単一の引数を使用して検索します。この関数は、指定された Key-Value を持つ要素にイテレーターを返します。それ以外の場合は、過去のイテレーターを返します。次の例では、std::pair<string, string> タイプの map を初期化し、find 関数に渡されたユーザー入力からキー値を取得します。サンプルプログラムは、肯定的な文字列を cout ストリームに出力します。
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};
  for (const auto& [key, value] : lang_map) {
    cout << key << " : " << value << endl;
  }
  cout << "Enter the key to search for: ";
  cin >> key_to_find;
  if (lang_map.find(key_to_find) != lang_map.end()) {
    cout << "Key Exists!" << endl;
  }
  return EXIT_SUCCESS;
}
出力:
j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!
std::map::count 関数を使用して、C++ マップにキーが存在するかどうかを確認する
または、std::map コンテナの count 組み込み関数を利用して、特定のキーがマップオブジェクトに存在するかどうかを確認することもできます。count 関数は、指定されたキー値を持つ要素の数を取得することに注意してください。キー0 の要素が見つからない場合は、値が返されます。したがって、count 関数呼び出しを if 条件として使用して、指定されたキーがマップオブジェクトに存在する場合に肯定文字列を出力できます。
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};
  cout << "Enter the key to search for: ";
  cin >> key_to_find;
  if (lang_map.count(key_to_find)) {
    cout << "Key Exists!" << endl;
  }
  return EXIT_SUCCESS;
}
出力:
Enter the key to search for: l
Key Exists!
std::map::contains 関数を使用して、C++ マップにキーが存在するかどうかを確認する
contains は、キーが map に存在するかどうかを見つけるために使用できるもう 1つの組み込み関数です。指定されたキーを持つ要素がオブジェクトに存在する場合、この関数はブール値を返します。この記事にリストされている 3つの関数はすべて、対数の複雑さを持っていることに注意してください。
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};
  cout << "Enter the key to search for: ";
  cin >> key_to_find;
  if (lang_map.contains(key_to_find)) {
    cout << "Key Exists!" << endl;
  }
  return EXIT_SUCCESS;
}
出力:
Enter the key to search for: l
Key Exists!
