C++ STLのunordered_multimapにおけるreserve()関数の使い方
C++ STLのunordered_multimapが提供するreserve()関数は、コンテナに少なくともn個の要素を格納できるよう、バケット数を最も適切な値へ設定します。
引数nが「現在のバケット数 × max_load_factor」よりも大きい場合、コンテナは自動的にバケット数を増やし、強制的に再ハッシュ(rehash)を行います。
reserve()には戻り値がなく、要求する最小容量に対応する最小要素数を指定する引数nのみを受け取ります。
アルゴリズム
Begin
マップコンテナmを宣言する。
m.reserve(6) = バケットに必要な最小容量分のサイズを予約する。
キーと値のペアを挿入する。
結果を出力する。
End.サンプルコード
#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
unordered_map<char, int> m; // mをマップコンテナとして宣言
m.reserve(6); // 最適なバケットサイズを事前に確保
m.insert (pair<char, int>('b', 10)); // 値を挿入
m.insert (pair<char, int>('a', 20));
cout << "The size is: " << m.size();
cout << "\nKey and values are: ";
for (auto it = m.begin(); it != m.end(); it++) {
cout << "{" << it->first << ", " << it->second << "} "; // マップコンテナの内容を出力
}
return 0;
}実行結果
The size is: 2
Key and values are: {a, 20} {b, 10}このようにreserve()を使うことで、あらかじめ十分なバケット数を確保しておき、要素挿入時の再ハッシュによるパフォーマンス低下を防ぐことができます。大量のデータを挿入する前に呼び出しておくと、処理効率の向上が期待できます。
-
C++ STLのcosh()関数とは?双曲線余弦の求め方をサンプルコード付きで解説
cosh()関数とは? C++のSTLに組み込まれているcosh()関数は、ラジアン単位で与えられた角度の双曲線余弦(ハイパボリック・コサイン)を計算して返す関数です。使用するには、<cmath>ヘッダーをインクルードする必要があります。 双曲線余弦は、数学的に次の式で定義されます。 cosh(x) = (e^x + e^(-x)) / 2 構文 cosh()関数の構文は以下の通りです。 cosh(var) 構文から分かるように、cosh()関数はfloat型、double型、long double型のいずれかの引数varを受け取ります。そして、その双曲線余弦を返します。なお、引
-
C++ STLのsinh()関数の使い方を徹底解説
sinh()関数とはsinh()関数は、ラジアンで指定された値の双曲線正弦(ハイパボリックサイン)を返す関数です。C++のSTL(標準テンプレートライブラリ)に組み込まれており、<cmath>ヘッダをインクルードすることで利用できます。双曲線正弦は、以下の数式で定義されます。sinh(x) = (e^x − e^−x) / 2sinh()関数の構文sinh()関数の構文は以下のとおりです。sinh(var)構文からわかるように、sinh()関数はfloat型、double型、long double型のいずれかのパラメータvarを受け取ります。戻り値は、varの双曲線正弦です。sin