【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()とセットで覚えておくとよいでしょう。
-
C++ STLのacos()関数とは?使い方をサンプルコード付きで解説
C++ STLのacos()関数とはacos()関数は、ラジアン単位で与えられた値に対する逆余弦(アークコサイン)を返す関数で、C++のSTLに標準で組み込まれています。この関数は<cmath>ヘッダで定義されています。acos()関数の構文acos(var)構文から分かるように、acos()関数はfloat、double、long doubleのいずれかのデータ型を持つ引数varを1つ受け取ります。引数の値は-1から1の範囲内でなければなりません。範囲外の値を渡した場合はNaN(非数)が返される点に注意が必要です。戻り値は、-πからπの範囲におけるvarの逆余弦(ラジアン単位)で
-
C++ STLのasinh()関数とは?使い方とサンプルコードを解説
asinh()関数とはasinh()関数は、ラジアンで指定された角度に対する逆双曲線正弦(アークハイパボリックサイン)を返す関数です。C++ STLに標準で組み込まれており、<cmath>ヘッダーをインクルードすることで利用できます。構文asinh(var)上記の構文が示すように、asinh()関数はfloat型、double型、またはlong double型の引数varを1つ受け取ります。この引数には、負の値・正の値・0のいずれも指定可能です。関数はvarの逆双曲線正弦を返します。asinh()関数の基本的な使用例以下のプログラムは、C++でのasinh()関数の使用方法を示した