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

C++ STLのmultimap::count()関数の使い方を徹底解説

この記事では、C++ STLにおけるmultimap::count()関数の動作、構文、そして具体的な使用例について詳しく解説します。

C++ STLにおけるmultimapとは?

multimap(マルチマップ)は連想コンテナの一種で、mapコンテナとよく似た性質を持っています。キー(key)とマップされた値(mapped value)の組み合わせからなる要素を、特定の順序で格納することができます。

mapとの最大の違いは、同じキーに対して複数の要素を関連付けられるという点です。また、コンテナ内のデータは、内部で常にキーに基づいて自動的にソートされて管理されます。

multimap::count()とは?

multimap::count()は、C++ STLに組み込まれている関数で、<map>ヘッダーファイル内で定義されています。この関数は、指定したキーに関連付けられた要素がmultimap内にいくつ存在するかを数えるために使用されます。

もし指定したキーがmultimapコンテナ内に存在しない場合、この関数は0を返します。

構文

multimap_name.count(key_type& key);

パラメータ

この関数は以下のパラメータを受け取ります。

  • key − 検索対象となるキーです。このキーに関連付けられた要素の個数をカウントします。

戻り値

この関数は整数値、すなわち同じキーを持つ要素の個数を返します。

入力例:

std::multimap<char, int> odd, eve;
odd.insert(make_pair('a', 1));
odd.insert(make_pair('a', 3));
odd.insert(make_pair('c', 5));
odd.count('a');

出力結果:

2

使用例

#include <bits/stdc++.h>
using namespace std;
int main(){
    // コンテナを作成
    multimap<int, int> mul;
    // emplace_hintを使って要素を挿入
    mul.emplace_hint(mul.begin(), 1, 10);
    mul.emplace_hint(mul.begin(), 2, 20);
    mul.emplace_hint(mul.begin(), 2, 30);
    mul.emplace_hint(mul.begin(), 1, 40);
    mul.emplace_hint(mul.begin(), 1, 50);
    mul.emplace_hint(mul.begin(), 5, 60);
    cout << "\nmultimap内の要素 : \n";
    cout << "KEY\tELEMENT\n";
    for (auto i = mul.begin(); i!= mul.end(); i++){
        cout << i->first << "\t" << i->second << endl;
    }
    cout<<"キー1は " << mul.count(1) <<" 回出現します\n";
    cout<<"キー2は " << mul.count(2) <<" 回出現します\n";
    return 0;
}

出力結果

上記のコードを実行すると、以下のような出力が生成されます。

multimap内の要素 :
KEY ELEMENT
1 50
1 40
1 10
2 30
2 20
5 60
キー1は 3 回出現します
キー2は 2 回出現します

このように、multimapでは同じキー「1」に複数の値(10、40、50)が関連付けられており、count()関数を使うことで各キーの出現回数を簡単に取得できることがわかります。

  1. C++ STLのset::count()関数の使い方を徹底解説

    この記事では、C++ STLにおけるset::count()関数について、その構文、動作の仕組み、そして戻り値の詳細をわかりやすく解説します。C++ STLにおけるsetとは?setは、C++ STLが提供する連想コンテナの一つで、重複しない一意な要素を自動的にソートされた順序で格納します。要素の値そのものが識別子として機能するため、同じ値を持つ要素を複数持つことはできません。また、一度setに追加した値は後から変更することができませんが、要素の削除や新たな追加は自由に行えます。内部実装としては二分探索木(一般的には赤黒木)が採用されており、高速な検索・挿入・削除が可能です。set::coun

  2. C++のSTLでマルチマップ(multimap)を実装するプログラムの解説

    マルチマップ(multimap)は、C++の標準テンプレートライブラリ(STL)が提供する連想コンテナの一つで、複数の要素が同じキーを持てるという点を除けば、マップ(map)とよく似ています。マルチマップでは、キー値とマップ値のペアそのものが一意である必要があります。使用する主な関数mm::find() – マルチマップ内でキー値 b を持つ要素を検索します。見つかった場合はその要素へのイテレータを、見つからない場合は end() イテレータを返します。mm::erase() – 指定したキー値(またはイテレータが指す要素)をマルチマップから削除します。mm::equal_range() –