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

C++のmap::count()関数の使い方を徹底解説!構文・戻り値・実用コード例

本記事では、C++ STLにおけるmap::count()関数の動作原理、構文、そして具体的なコード例について詳しく解説します。

C++ STLにおけるmap(マップ)とは?

マップ(map)は連想配列コンテナの一種で、キー値(key)とマップ値(mapped value)を組み合わせた要素を特定の順序で格納できます。マップコンテナでは、データは内部で常にキーに基づいて自動的にソートされ、各値には一意なキーを通じてアクセスします。

map::count()とは?

map::count()は、<map>ヘッダファイルに含まれるメンバ関数です。指定したキーを持つ要素の個数を返す機能を持ちます。マップのキーは重複しないため、キーが存在すれば1、存在しなければ0を返します。この性質により、キーの存在確認に非常に便利です。

構文

map_name.count(key);

パラメータ

この関数は、検索対象となるキーを指定する引数を1つ受け取ります。

戻り値

指定したキーがコンテナ内に存在する場合は1(真)、存在しない場合は0(偽)を返します。戻り値がブール値として扱えるため、if文などの条件式にそのまま組み込めます。なお、計算量はO(log n)で、二分探索によって高速に処理されます。

基本的な使い方の流れ

  • まず、マップコンテナを初期化します。

  • 次に、insert()や添字演算子[]を使って、キーとともに要素を挿入します。

  • 最後に、count()を使って目的のキーがコンテナ内に存在するかどうかをチェックします。

別のアプローチとしては、イテレータを使って先頭要素から末尾要素までループ処理を行い、その中で目的のキーが存在するかどうかを順番に確認する方法もあります。ただし、count()を使えば一行で存在確認ができるため、通常はこちらが推奨されます。

使用例1:整数キーの存在確認

// map::count()関数の動作を示すC++コード
#include <iostream>
#include <map>
using namespace std;

int main() {
    map<int, int> mp;
    mp.insert({1, 40});
    mp.insert({3, 20});
    mp.insert({2, 30});
    mp.insert({5, 10});
    mp.insert({4, 50});

    if (mp.count(1))
        cout << "The Key 1 is present\n";
    else
        cout << "The Key 1 is not present\n";

    if (mp.count(7))
        cout << "The Key 7 is Present\n";
    else
        cout << "The Key 7 is not Present\n";

    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が得られます。

The Key 1 is present
The Key 7 is not present

使用例2:文字キーでの繰り返しチェック

#include <iostream>
#include <map>
using namespace std;

int main() {
    map<char, int> mp;
    char i;
    mp['a'] = 2;
    mp['c'] = 3;
    mp['e'] = 1;

    for (i = 'a'; i <= 'f'; i++) {
        cout << i;
        if (mp.count(i) > 0)
            cout << " is an element of mp.\n";
        else
            cout << " is not an element of mp.\n";
    }
    return 0;
}

実行結果

上記のコードを実行すると、以下の出力が得られます。

a is an element of mp.
b is not an element of mp.
c is an element of mp.
d is not an element of mp.
e is an element of mp.
f is not an element of mp.

まとめ

map::count()は、キーの存在確認を簡潔に書ける便利な関数です。類似の機能を持つfind()メソッドとの違いは、find()がイテレータを返すのに対し、count()は個数(0または1)を直接返す点にあります。条件分岐だけでキーの有無を判断したい場合には、count()が最適です。

  1. C++のmap・unordered_mapでキーが存在するか確認する方法

    C++のstd::mapやstd::unordered_mapは、キーとそれに対応する値をペアで管理する連想コンテナです。本記事では、指定したキーがマップ内に存在するかどうかを判定する方法を解説します。find()を使ったキーの存在チェック最も一般的な方法は、find()メンバ関数を使うことです。find()は指定したキーを検索し、見つかった場合はその要素へのイテレータを返します。キーが存在しない場合は、終端イテレータend()が返されるため、これを利用して存在判定を行えます。サンプルコード#include<iostream> #include<map> using n

  2. C++ STLのstd::arrayで使えるget()関数の使い方を徹底解説

    この記事では、C++ STLのstd::arrayコンテナに用意されているget()関数について詳しく解説します。この関数は、配列コンテナ内のi番目の要素を取得するために使用される便利な非メンバ関数です。 構文 get<i> array_name get()関数は、2つの必須パラメータを受け取ります。 1つ目はインデックスパラメータで、配列のi番目の位置を指定します。ここにはテンプレート引数として整数の定数を渡します。 2つ目は配列名(array_name)で、実際に要素を取り出す対象となる配列そのものです。 この関数は、指定されたi番目の要素への参照を返します。 なお、get()