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

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

本記事では、C++ STLにおけるmultimap::key_comp()関数の仕組み、構文、そして具体的なコード例について詳しく解説します。

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

multimapは連想コンテナの一種で、mapコンテナとよく似た性質を持っています。キー値(key)とマップ値(mapped value)の組み合わせからなる要素を、特定の順序で格納することができます。multimapコンテナの最大の特徴は、同じキーに対して複数の要素を関連付けられる点です。また、データは内部的に常に、関連付けられたキーに基づいて自動的にソートされます。

multimap::key_comp()とは?

multimap::key_comp()は、<map>ヘッダーファイルに含まれる関数です。この関数は、キー比較オブジェクトのコピーを返します。デフォルトでは「より小さい(less than)」を表すオブジェクトであり、比較演算子<と同じように動作します。このオブジェクトは、multimapコンテナ内の要素キーの順序を判定するために使用されます。関数は2つの引数を受け取ってそれぞれのキーを比較し、最初の要素が小さくて2番目の要素の前に配置されるべき場合はtrueを、そうでない場合はfalseを返します。

構文

Key_compare.key_comp();

パラメータ

この関数は引数を受け取りません。

戻り値

キー比較用のオブジェクトを返します。

入力例

multimap<char, int> newmap;
multimap<char, int> :: key_compare cmp = newmap.key_comp();
newmap.insert(make_pair('A', 1));
newmap.insert(make_pair('B', 2));
newmap.insert(make_pair('C', 3));

出力例

A= 1
B= 2
C= 3

使用例

#include <iostream>
#include <map>
using namespace std;
int main(){
    multimap<int, char> mul;
    multimap<int, char>::key_compare cmp = mul.key_comp();
    //指定したキーに要素を挿入
    mul.insert(make_pair(0, 'A'));
    mul.insert(make_pair(1, 'B'));
    mul.insert(make_pair(2, 'C'));
    mul.insert(make_pair(3, 'D'));
    int a = mul.rbegin()->first;
    multimap<int, char>::iterator it = mul.begin();
    cout<<"Elements at given key is : "<<'\n';
    do {
        cout << it->first << " = " << it->second << '\n';
    }
    while (cmp((*it++).first, a));
    return 0;
}

出力結果

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

Elements at given key is :
0 = A
1 = B
2 = C
3 = D

このように、key_comp()で取得した比較オブジェクトを使うことで、コンテナ内部のソート順序と同じ基準でキーを比較しながら要素を走査することができます。multimapを活用した実装において、キーの順序判定をカスタマイズしたい場合にも非常に便利な機能です。

  1. C++ STLのmultimap::find()関数の使い方と実例解説

    本記事では、C++ STLにおけるmultimap::find()関数の動作、構文、および具体的な使用例について詳しく解説します。C++ STLにおけるmultimapとは?multimapは連想コンテナ(associative container)の一種で、mapコンテナと非常によく似た性質を持っています。キー値とマップされた値(mapped value)の組み合わせからなる要素を、特定の順序で格納することができます。mapとの最大の違いは、同じキーに対して複数の要素を関連付けられるという点です。また、コンテナ内のデータは、内部で常にキーに基づいて自動的にソートされるという特徴もあります。m

  2. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス