C++ STLのmap::find()関数の使い方を徹底解説
この記事では、C++ STLにおける map::find() 関数の動作、構文、そして具体的な使用例について詳しく解説します。
C++ STLのmapとは?
mapは連想コンテナ(associative container)の一種で、キー値とそれに対応するマップ済みの値(value)の組み合わせからなる要素を、特定の順序で格納することができます。mapコンテナ内部のデータは、常にキーに基づいて自動的にソートされるのが特徴です。また、各要素には一意なキーが割り当てられており、そのキーを使って対応する値へ高速にアクセスできます。
map::find()とは?
map::find() は、<map> ヘッダーファイルに定義されているメンバ関数です。引数で指定したキーを持つ要素をコンテナ内から検索し、その要素を指すイテレータを返します。
なお、指定したキーが見つからなかった場合は、コンテナの末尾を示す end() イテレータが返される点にも注意してください。
構文
map_name.find(key_value k);
パラメータ
この関数は以下の引数を受け取ります。
k: mapコンテナ内から検索したいキー値です。
戻り値
キー k に関連付けられた要素を指すイテレータを返します。該当する要素が存在しない場合は end() イテレータを返します。
使用例
例1:基本的な使い方
入力
map<char, int> newmap;
newmap['a'] = 1;
newmap['b'] = 2;
newmap.find('b');
出力
2
例2:find()で取得したイテレータから要素を表示する
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_Map;
TP_Map.insert({3, 50});
TP_Map.insert({2, 30});
TP_Map.insert({1, 10});
TP_Map.insert({4, 70});
cout<<"TP Map is : \n";
cout << "MAP_KEY\tMAP_ELEMENT\n";
for (auto i = TP_Map.begin(); i!= TP_Map.end(); i++) {
cout << i->first << "\t" << i->second << endl;
}
// 指定位置の要素を検索する
auto var = TP_Map.find(1);
cout<<"Found element at position "<<var->first<<" is : "<<var->second;
auto var_1 = TP_Map.find(2);
cout<<"\nFound element at position "<<var_1->first<<" is : "<<var_1->second;
return 0;
}
出力
TP Map is: MAP_KEY MAP_ELEMENT 1 10 2 30 3 50 4 70 Found element at position 1 is : 10 Found element at position 2 is : 30
例3:find()の戻り値を起点としてループ処理を行う
find() の戻り値であるイテレータは、begin() の代わりにループの開始位置としても利用できます。これにより、特定のキー以降の要素だけを順番に処理することが可能です。
#include <bits/stdc++.h>
using namespace std;
int main() {
map<int, int> TP_Map;
TP_Map.insert({3, 50});
TP_Map.insert({2, 30});
TP_Map.insert({1, 10});
TP_Map.insert({4, 70});
cout<<"TP Map is : \n";
cout << "MAP_KEY\tMAP_ELEMENT\n";
for (auto i = TP_Map.find(2); i!= TP_Map.end(); i++) {
cout << i->first << "\t" << i->second << endl;
}
return 0;
}
出力
TP Map is: MAP_KEY MAP_ELEMENT 2 30 3 50 4 70
まとめ
map::find() は、キーを指定してmapコンテナ内の要素を効率的に検索できる便利な関数です。戻り値のイテレータを活用することで、要素の参照だけでなく、特定の位置からの走査など柔軟な処理も実現できます。検索対象のキーが存在しない場合に end() が返される仕様を理解しておけば、安全に活用できるでしょう。
-
【C++ STL】set::find()関数の使い方を徹底解説!構文・戻り値・実用例
本記事では、C++ STLのset::find()関数について、その構文、動作、そして戻り値をわかりやすく解説します。C++ STLにおけるsetとは?C++ STLのsetは、重複のない一意な要素を自動的にソートされた順序で格納する連想コンテナです。set内では要素の値そのものが識別子として機能するため、すべての要素が一意である必要があります。一度setに追加した値は後から変更できませんが、要素の追加や削除はいつでも可能です。また、setは内部的に二分探索木(赤黒木)として実装されており、高速な検索処理を実現しています。set::find()とはfind()関数は、<set>ヘッ
-
C++ STLのset find()関数の使い方を解説
C++ STLのsetコンテナにおけるfind()関数は、指定した要素を検索し、その要素を指すイテレータを返します。もし要素がセット内に存在しない場合は、最後の要素の直後の位置(つまりend()が返すイテレータ)を指す値が返されます。この関数の計算量はO(log n)であり、setが内部的に平衡二分探索木(赤黒木)で実装されているため、高速な検索が可能です。アルゴリズムBegin セットコンテナの要素を出力するための関数 printS() を定義する。 空のセットコンテナ s を初期化し、いくつかの要素を挿入する。 関数を呼び出して、セットコンテナの要素を出力する。