C++
 Computer >> コンピューター >  >> プログラミング >> C++

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() が返される仕様を理解しておけば、安全に活用できるでしょう。

  1. 【C++ STL】set::find()関数の使い方を徹底解説!構文・戻り値・実用例

    本記事では、C++ STLのset::find()関数について、その構文、動作、そして戻り値をわかりやすく解説します。C++ STLにおけるsetとは?C++ STLのsetは、重複のない一意な要素を自動的にソートされた順序で格納する連想コンテナです。set内では要素の値そのものが識別子として機能するため、すべての要素が一意である必要があります。一度setに追加した値は後から変更できませんが、要素の追加や削除はいつでも可能です。また、setは内部的に二分探索木(赤黒木)として実装されており、高速な検索処理を実現しています。set::find()とはfind()関数は、<set>ヘッ

  2. C++ STLのset find()関数の使い方を解説

    C++ STLのsetコンテナにおけるfind()関数は、指定した要素を検索し、その要素を指すイテレータを返します。もし要素がセット内に存在しない場合は、最後の要素の直後の位置(つまりend()が返すイテレータ)を指す値が返されます。この関数の計算量はO(log n)であり、setが内部的に平衡二分探索木(赤黒木)で実装されているため、高速な検索が可能です。アルゴリズムBegin セットコンテナの要素を出力するための関数 printS() を定義する。 空のセットコンテナ s を初期化し、いくつかの要素を挿入する。 関数を呼び出して、セットコンテナの要素を出力する。