C++ STLにおけるmultimap::rbegin()関数の使い方を徹底解説
この記事では、C++ STLにおける multimap::rbegin() 関数の動作、構文、そして具体的な使用例について詳しく解説します。
C++ STLにおけるmultimapとは?
multimap(マルチマップ)は、mapコンテナとよく似た連想コンテナの一種です。キー値とマップされた値(バリュー)を組み合わせた要素を、特定の順序で格納することができます。multimapの大きな特徴は、同じキーに対して複数の要素を関連付けられるという点です。また、コンテナ内部のデータは常にキーに基づいて自動的にソートされます。
multimap::rbegin()とは?
multimap::rbegin() はC++ STLに組み込まれた関数で、<map> ヘッダーファイル内で定義されています。「rbegin」は「reverse begin(逆順の先頭)」を意味し、begin() の逆の働きをする関数です。この関数は、multimapコンテナの最後の要素を指す逆順イテレータ(リバースイテレータ)を返します。
構文
multiMap_name.rbegin();
パラメータ
この関数は引数(パラメータ)を受け取りません。
戻り値
multimapコンテナの最後の要素を指す逆順イテレータを返します。
入力例:
multimap<char, int> newmap; newmap['a'] = 1; newmap['b'] = 2; newmap['c'] = 3; newmap.rbegin();
出力結果:
c:3
使用例
以下は、rbegin() を使ってmultimapの最後の要素を取得し、さらに rbegin() から rend() までループすることで、要素を逆順に表示するサンプルコードです。
#include <bits/stdc++.h>
using namespace std;
int main(){
multimap<int, int>mul;
// multimapに要素を挿入
mul.insert({ 1, 10 });
mul.insert({ 2, 20 });
mul.insert({ 3, 30 });
mul.insert({ 4, 40 });
mul.insert({ 5, 50 });
// rbegin()を使って最後の要素(逆順の先頭)を取得
cout<<"First element is: "<<mul.rbegin()->first<<","<<mul.rbegin()->second;
// multimapの全要素を逆順に表示
cout << "\nElements in multimap is : \n";
cout << "KEY\tELEMENT\n";
for (auto it = mul.rbegin(); it!= mul.rend(); ++it){
cout << it->first << '\t' << it->second << '\n';
}
return 0;
}出力結果
上記のコードを実行すると、以下のような出力が得られます。
First element is: 5,50 Elements in multimap is : KEY ELEMENT 5 50 4 40 3 30 2 20 1 10
このように、rbegin() はmultimapの末尾(キーが最大の要素)から走査を開始したい場合に非常に便利です。逆順に要素へアクセスすることで、降順でのデータ処理や検索が簡単に行えます。
-
C++ STLのdeque::rbegin()関数とは?逆順走査の使い方とサンプルコード
本記事では、C++ STLにおけるdeque(デキュー)のrbegin()関数の機能について、具体例を交えてわかりやすく解説します。deque(デキュー)とは?deque(Double Ended Queue:両端キュー)はシーケンスコンテナの一種で、先頭と末尾の両端に対して要素の挿入・削除を効率的に行えるコンテナです。一般的なキュー(待ち行列)のデータ構造では、データの挿入は「末尾」からのみ行い、削除は「先頭」からのみ行うというルールがあります。例えば、バス停の行列をイメージすると分かりやすいでしょう。行列に並ぶ人は「末尾」から追加され、「先頭」にいる人から順に乗車して取り除かれます。一方、
-
C++のSTLでマルチマップ(multimap)を実装するプログラムの解説
マルチマップ(multimap)は、C++の標準テンプレートライブラリ(STL)が提供する連想コンテナの一つで、複数の要素が同じキーを持てるという点を除けば、マップ(map)とよく似ています。マルチマップでは、キー値とマップ値のペアそのものが一意である必要があります。使用する主な関数mm::find() – マルチマップ内でキー値 b を持つ要素を検索します。見つかった場合はその要素へのイテレータを、見つからない場合は end() イテレータを返します。mm::erase() – 指定したキー値(またはイテレータが指す要素)をマルチマップから削除します。mm::equal_range() –