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

【C++ STL】multimap::rend()関数の使い方と実例を徹底解説


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

C++ STLのmultimapとは?

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

multimap::rend()とは?

multimap::rend()は、C++ STLの<map>ヘッダファイルに定義されている組み込み関数です。rend()は「reverse end(逆順の終端)」を意味し、end()関数の逆の働きをするものです。この関数は、multimapコンテナの最初の要素の直前(理論上の先頭より前の位置)を指すリバースイテレータを返します。つまり、rbegin()から始まる逆順走査における「終了位置」として機能します。

構文

multiMap_name.rend();

パラメータ

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

戻り値

multimapコンテナの先頭要素の直前を指すリバースイテレータを返します。rbegin()と組み合わせて使用することで、コンテナ内の要素を後ろから前へ向かって走査できます。

入力例

multimap<char, int> newmap;
newmap['a'] = 1;
newmap['b'] = 2;
newmap['c'] = 3;
newmap.rend();

出力

error

なお、multimapにはoperator[]が定義されていないため、上記のように[]を使った代入を行うとコンパイルエラー(error)となります。multimapに要素を追加する場合は、insert()メンバ関数を使用してください。

使用例

#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 });
    //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;
}

出力結果

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

Elements in multimap is :
KEY ELEMENT
5 50
4 40
3 30
2 20
1 10

この例では、rbegin()からrend()までループを回すことで、multimapの要素がキーの降順(大きい順)に出力されています。rend()は逆順走査の終端判定に使われる重要な関数であり、rbegin()とセットで覚えておくとよいでしょう。

  1. C++ STLのacos()関数とは?使い方をサンプルコード付きで解説

    C++ STLのacos()関数とはacos()関数は、ラジアン単位で与えられた値に対する逆余弦(アークコサイン)を返す関数で、C++のSTLに標準で組み込まれています。この関数は<cmath>ヘッダで定義されています。acos()関数の構文acos(var)構文から分かるように、acos()関数はfloat、double、long doubleのいずれかのデータ型を持つ引数varを1つ受け取ります。引数の値は-1から1の範囲内でなければなりません。範囲外の値を渡した場合はNaN(非数)が返される点に注意が必要です。戻り値は、-πからπの範囲におけるvarの逆余弦(ラジアン単位)で

  2. C++ STLのasinh()関数とは?使い方とサンプルコードを解説

    asinh()関数とはasinh()関数は、ラジアンで指定された角度に対する逆双曲線正弦(アークハイパボリックサイン)を返す関数です。C++ STLに標準で組み込まれており、<cmath>ヘッダーをインクルードすることで利用できます。構文asinh(var)上記の構文が示すように、asinh()関数はfloat型、double型、またはlong double型の引数varを1つ受け取ります。この引数には、負の値・正の値・0のいずれも指定可能です。関数はvarの逆双曲線正弦を返します。asinh()関数の基本的な使用例以下のプログラムは、C++でのasinh()関数の使用方法を示した