|
|
(1)
|
(C++11以降)
|
|
|
(2)
|
(C++17以降)
|
|
|
|
|
std::unordered_multimap
は、同等のキーをサポートする(unordered_multimapは各キー値の複数のコピーを含むことができる)順序付けされていない連想コンテナであり、キーと別の型の値を関連付けます。unordered_multimapクラスは前方イテレータをサポートします。検索、挿入、削除の操作は平均的に定数時間の計算量を持ちます。
内部的には、要素は特定の順序でソートされず、バケットに整理されます。要素がどのバケットに配置されるかは、そのキーのハッシュに完全に依存します。これにより、個々の要素への高速なアクセスが可能になります。なぜなら、ハッシュが計算されると、その要素が配置された正確なバケットを指し示すからです。
このコンテナの反復順序は安定である必要はありません(したがって、例えば
std::equal
を使用して2つの
std::unordered_multimap
を比較することはできません)。ただし、キーが
等価
と比較される(
key_eq()
を比較子として等しいと比較される)要素の各グループは、反復順序において連続した部分範囲を形成し、
equal_range()
でもアクセス可能です。
std::unordered_multimap
は
Container
、
AllocatorAwareContainer
、
UnorderedAssociativeContainer
の要件を満たします。
std::unordered_multimapのすべてのメンバー関数は
std::unordered_multimap
です:
constexpr
定数式の評価において
std::unordered_multimap
オブジェクトを作成および使用することが可能です。
ただし、
std::unordered_multimap
オブジェクトは一般的に
constexpr
にはなりません。なぜなら、動的に割り当てられたストレージは同じ定数式の評価内で解放されなければならないためです。
|
(C++26以降)
|
|
内容
テンプレートパラメータ
メンバ型
| 型
|
定義
|
key_type
|
Key
|
mapped_type
|
T
|
value_type
|
std::pair<const Key, T>
|
size_type
|
符号なし整数型(通常は std::size_t)
|
difference_type
|
符号付き整数型(通常は std::ptrdiff_t)
|
hasher
|
Hash
|
key_equal
|
KeyEqual
|
allocator_type
|
Allocator
|
reference
|
value_type&
|
const_reference
|
const value_type&
|
pointer
|
std::allocator_traits<Allocator>::pointer
|
const_pointer
|
std::allocator_traits<Allocator>::const_pointer
|
iterator
|
LegacyForwardIterator および ConstexprIterator(C++26以降) から value_type
|
const_iterator
|
LegacyForwardIterator および ConstexprIterator(C++26以降) への const value_type
|
local_iterator
|
イテレータ型で、そのカテゴリ、値、差、ポインタ、および 参照型は iterator と同じです。このイテレータは 単一のバケットを反復するために使用できますが、バケットをまたいで反復することはできません。
|
const_local_iterator
|
イテレータ型で、そのカテゴリ、値、差、ポインタ、および 参照型は const_iterator と同じです。このイテレータは 単一のバケットを反復するために使用できますが、バケットをまたいで反復することはできません。
|
node_type (C++17以降)
|
node handle の特殊化で、コンテナノードを表します。
|
メンバー関数
|
|
unordered_multimapを構築する
(public member function)
|
|
|
unordered_multimapを破棄する
(公開メンバ関数)
|
|
|
コンテナに値を代入する
(公開メンバ関数)
|
|
|
関連するアロケータを返す
(public member function)
|
イテレータ
|
|
|
先頭を指すイテレータを返す
(公開メンバ関数)
|
|
|
終端イテレータを返す
(公開メンバ関数)
|
容量
|
|
|
コンテナが空かどうかをチェックします
(public member function)
|
|
|
要素数を返す
(public member function)
|
|
|
格納可能な最大要素数を返す
(公開メンバ関数)
|
修飾子
|
|
|
内容をクリアする
(public member function)
|
|
|
要素を挿入する
またはノード
(C++17以降)
(公開メンバ関数)
|
|
|
要素の範囲を挿入する
(公開メンバ関数)
|
|
|
要素をその場で構築する
(公開メンバ関数)
|
|
|
ヒントを使用して要素をその場で構築する
(公開メンバ関数)
|
|
|
要素を削除する
(公開メンバ関数)
|
|
|
内容を交換する
(public member function)
|
|
|
コンテナからノードを抽出する
(公開メンバ関数)
|
|
|
別のコンテナからノードをスプライスする
(公開メンバ関数)
|
ルックアップ
|
|
|
指定されたキーに一致する要素の数を返す
(公開メンバ関数)
|
|
|
特定のキーを持つ要素を検索
(公開メンバ関数)
|
|
|
指定されたキーを持つ要素がコンテナに含まれているかどうかをチェックします
(public member function)
|
|
|
特定のキーに一致する要素の範囲を返す
(公開メンバ関数)
|
バケットインターフェース
|
|
|
指定されたバケットの先頭を指すイテレータを返す
(public member function)
|
|
|
指定されたバケットの終端を指すイテレータを返す
(public member function)
|
|
|
バケット数を返す
(公開メンバ関数)
|
|
|
バケットの最大数を返す
(public member function)
|
|
|
特定のバケット内の要素数を返す
(公開メンバー関数)
|
|
|
指定されたキーのバケットを返す
(public member function)
|
ハッシュポリシー
|
|
|
バケットあたりの平均要素数を返す
(公開メンバ関数)
|
|
|
バケットあたりの最大平均要素数を管理します
(公開メンバ関数)
|
|
|
指定された数のバケットを少なくとも確保し、ハッシュテーブルを再生成する
(public member function)
|
|
|
指定された数の要素以上の領域を確保し、ハッシュテーブルを再生成する
(public member function)
|
オブザーバー
|
|
|
キーをハッシュするために使用される関数を返す
(公開メンバ関数)
|
|
|
キーの等価性を比較するために使用される関数を返します
(公開メンバ関数)
|
非メンバー関数
(C++11)
(C++11)
(removed in C++20)
|
unordered_multimap内の値を比較する
(関数テンプレート)
|
|
|
std::swap
アルゴリズムを特殊化する
(関数テンプレート)
|
|
|
特定の条件を満たす全ての要素を削除する
(関数テンプレート)
|
注記
例
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
|
DR
|
適用対象
|
公開時の動作
|
正しい動作
|
|
LWG 2050
|
C++11
|
reference、const_reference、pointer
およびconst_pointerの定義は
allocator_typeに基づいていた
|
value_typeと
std::allocator_traits
に基づく
|
関連項目
|
|
キーと値のペアのコレクション、キーでハッシュ化、キーは一意
(クラステンプレート)
|
|
|
キーと値のペアのコレクション、キーでソート
(クラステンプレート)
|
|
|
2つのコンテナを適合させて、キーでソートされたキーと値のペアのコレクションを提供
(クラステンプレート)
|
|