std::unordered_multimap
ヘッダ <unordered_map> で定義
|
||
template< class Key, |
(1) | (C++11以上) |
namespace pmr { template <class Key, class T, |
(2) | (C++17以上) |
unordered multimap は等しいキーをサポートする非順序連想コンテナで、キーを異なる型の値に関連付けます。 unordered_multimap は各キーのコピーを複数格納できます。 unordered_multimap は前方イテレータをサポートします。 検索、挿入、削除は平均定数時間の計算量を持ちます。
内部的には、要素は特定の順序にソートされず、複数のバケットにまとめられます。 要素がどのバケットに配置されるかはもっぱらその値のハッシュに依存します。 これにより、いったんハッシュが計算されればその要素が配置される正確なバケットを参照できるため、個々の要素への高速なアクセスが可能になります。
このコンテナのイテレーション順序が安定であることは要求されません (そのため、例えば2つの std::unordered_multimap
を比較するために std::equal を使うことはできません) が、キーが同等 (key_eq() で比較して等しい) である要素のグループは、イテレーション順序��おいて隣接した範囲を形成します。 この範囲は equal_range() でアクセスできます。
std::unordered_multimap
は Container, AllocatorAwareContainer, UnorderedAssociativeContainer の要件を満たします。
目次 |
[編集] メンバ型
メンバ型 | 定義 |
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 |
const_iterator
|
const LegacyForwardIterator |
local_iterator
|
カテゴリおよび value, difference, pointer, reference の各型が iterator と同じイテレータ型。 このイテレータはバケット内をイテレートするために使用することができますが、別のバケットには移動できません
|
const_local_iterator
|
カテゴリおよび value, difference, pointer, reference の各型が const_iterator と同じイテレータ型。 このイテレータはバケット内をイテレートするために使用することができますが、別のバケットには移動できません
|
node_type (C++17以上) |
コンテナノードを表すノードハンドルの特殊化 |
[編集] メンバ関数
unordered_multimap を構築します (パブリックメンバ関数) | |
unordered_multimap を破棄します (パブリックメンバ関数) | |
コンテナに値を代入します (パブリックメンバ関数) | |
関連付けられているアロケータを返します (パブリックメンバ関数) | |
イテレータ | |
先頭を指すイテレータを返します (パブリックメンバ関数) | |
終端を指すイテレータを返します (パブリックメンバ関数) | |
容量 | |
コンテナが空かどうか調べます (パブリックメンバ関数) | |
要素数を返します (パブリックメンバ関数) | |
可能な最大の要素数を返します (パブリックメンバ関数) | |
変更 | |
すべての要素を削除します (パブリックメンバ関数) | |
要素またはノード (C++17以上)を挿入します (パブリックメンバ関数) | |
要素をその場で構築します (パブリックメンバ関数) | |
ヒントを使用して要素をその場で構築します (パブリックメンバ関数) | |
要素を削除します (パブリックメンバ関数) | |
(C++11) |
内容を入れ替えます (パブリックメンバ関数) |
(C++17) |
コンテナからノードを抽出します (パブリックメンバ関数) |
(C++17) |
他のコンテナからノードを接合します (パブリックメンバ関数) |
検索 | |
指定されたキーと一致する要素の数を返します (パブリックメンバ関数) | |
指定されたキーを持つ要素を探します (パブリックメンバ関数) | |
(C++20) |
コンテナが指定されたキーを持つ要素を格納しているかどうか調べます (パブリックメンバ関数) |
指定されたキーに一致する要素の範囲を返します (パブリックメンバ関数) | |
バケットインタフェース | |
指定されたバケットの先頭を指すイテレータを返します (パブリックメンバ関数) | |
指定されたバケットの終端を指すイテレータを返します (パブリックメンバ関数) | |
バケットの数を返します (パブリックメンバ関数) | |
バケットの最大数を返します (パブリックメンバ関数) | |
特定のバケットの要素数を返します (パブリックメンバ関数) | |
指定されたキーのためのバケットを返します (パブリックメンバ関数) | |
ハッシュポリシー | |
バケットあたりの平均要素数を返します (パブリックメンバ関数) | |
バケットあたりの平均要素数の最大値を管理します (パブリックメンバ関数) | |
少なくとも指定された数のバケットを予約します。 これによりハッシュテーブルが再生成されます。 (パブリックメンバ関数) | |
少なくとも指定された数の要素のための空間を予約します。 これによりハッシュテーブルが再生成されます。 (パブリックメンバ関数) | |
観察 | |
キーをハッシュするために使用される関数を返します (パブリックメンバ関数) | |
キーが等しいかどうかを比較するために使用される関数を返します (パブリックメンバ関数) |
[編集] 非メンバ関数
(C++20で削除) |
unordered_multimap 内の値を比較します (関数テンプレート) |
std::swap アルゴリズムの特殊化 (関数テンプレート) | |
特定の基準を満たすすべての要素を削除します (関数テンプレート) |