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を活用した実装において、キーの順序判定をカスタマイズしたい場合にも非常に便利な機能です。
-
C++ STLのmultimap::find()関数の使い方と実例解説
本記事では、C++ STLにおけるmultimap::find()関数の動作、構文、および具体的な使用例について詳しく解説します。C++ STLにおけるmultimapとは?multimapは連想コンテナ(associative container)の一種で、mapコンテナと非常によく似た性質を持っています。キー値とマップされた値(mapped value)の組み合わせからなる要素を、特定の順序で格納することができます。mapとの最大の違いは、同じキーに対して複数の要素を関連付けられるという点です。また、コンテナ内のデータは、内部で常にキーに基づいて自動的にソートされるという特徴もあります。m
-
C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード
C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス