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

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の末尾(キーが最大の要素)から走査を開始したい場合に非常に便利です。逆順に要素へアクセスすることで、降順でのデータ処理や検索が簡単に行えます。

  1. C++ STLのdeque::rbegin()関数とは?逆順走査の使い方とサンプルコード

    本記事では、C++ STLにおけるdeque(デキュー)のrbegin()関数の機能について、具体例を交えてわかりやすく解説します。deque(デキュー)とは?deque(Double Ended Queue:両端キュー)はシーケンスコンテナの一種で、先頭と末尾の両端に対して要素の挿入・削除を効率的に行えるコンテナです。一般的なキュー(待ち行列)のデータ構造では、データの挿入は「末尾」からのみ行い、削除は「先頭」からのみ行うというルールがあります。例えば、バス停の行列をイメージすると分かりやすいでしょう。行列に並ぶ人は「末尾」から追加され、「先頭」にいる人から順に乗車して取り除かれます。一方、

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

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