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!