std::unordered_multimap
| ヘッダ <unordered_map> で定義 |
||
| template< class Key, |
(1) | (C++11以降) |
| namespace pmr { template< |
(2) | (C++17以降) |
std::unordered_multimapは、等価なキーをサポートする(unordered_multimapは各キー値を複数個含みうる)非順序連想コンテナであり、キーに別の型の値を関連付ける。unordered_multimapクラスは前方イテレータをサポートする。検索、挿入、削除の平均計算量は定数時間である。
内部的には、要素は特定の順序でソートされず、バケットに編成される。要素がどのバケットに配置されるかは、そのキーのハッシュ値のみに依存する。これにより、ハッシュが計算されれば、要素が配置されている正確なバケットを指すため、個々の要素への高速なアクセスが可能になる。
このコンテナのイテレーション順序は安定である必要はない(したがって、例えば、2つの std::unordered_multimap を比較するために std::equal は使用できない)。ただし、キーが 等価 (比較器として key_eq() を用いて比較して等しい)である要素の各グループは、イテレーション順序において連続した部分範囲を形成し、これは equal_range() を用いてもアクセス可能である。
std::unordered_multimap は コンテナ (Container) 、 アロケータ認識コンテナ (AllocatorAwareContainer) 、 非順序連想コンテナ (UnorderedAssociativeContainer) の要件を満たす。
|
|
(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
|
value_type への 旧前方イテレータ (LegacyForwardIterator) および 定数式イテレータ (ConstexprIterator)(C++26から) |
const_iterator
|
const value_type への LegacyForwardIteratorおよび ConstexprIterator(C++26 以降) |
local_iterator
|
カテゴリ、値、差分、ポインタ、および 参照型が iterator と同じイテレータ型。このイテレータは、単一のバケットを走査するために使用できるが、バケットをまたいで使用することはできない |
const_local_iterator
|
カテゴリ、値、差分、ポインタ、および 参照型が const_iterator と同じ。このイテレータは、単一のバケットを走査するために使用できるが、バケットをまたいで使用することはできない |
node_type (C++17以降) |
コンテナのノードを表す ノードハンドル の特殊化 |
[編集] メンバ関数
unordered_multimap を構築する(公開メンバ関数) | |
unordered_multimap を破棄する(公開メンバ関数) | |
| コンテナに値を代入する (公開メンバ関数) | |
| 関連付けられたアロケータを返す (公開メンバ関数) | |
イテレータ | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 末尾へのイテレータを返す (public メンバ関数) | |
容量 | |
| コンテナが空かどうかをチェックする (public メンバ関数) | |
| 要素数を返す (public メンバ関数) | |
| 可能な最大要素数を返す (public メンバ関数) | |
変更 | |
| 内容をクリアする (公開メンバ関数) | |
| 要素 またはノード(C++17以降)を挿入する (公開メンバ関数) | |
| (C++23) |
要素の範囲を挿入する (公開メンバ関数) |
| 要素を直接構築する (公開メンバ関数) | |
| ヒントを使用して要素を直接構築する (公開メンバ関数) | |
| 要素を削除する (公開メンバ関数) | |
| 内容を交換する (public メンバ関数) | |
| (C++17) |
コンテナからノードを抽出する (公開メンバ関数) |
| (C++17) |
他のコンテナからノードを連結する (公開メンバ関数) |
検索 | |
| 特定のキーに一致する要素の数を返す (公開メンバ関数) | |
| 特定のキーを持つ要素を検索する (公開メンバ関数) | |
| (C++20) |
コンテナが特定のキーを持つ要素を含むか確認する (公開メンバ関数) |
| 特定のキーに一致する要素の範囲を返す (公開メンバ関数) | |
バケットインターフェース | |
| 指定されたバケットの先頭を指すイテレータを返す (public member function) | |
| 指定されたバケットの末尾を指すイテレータを返す (public member function) | |
| バケット数を返す (public member function) | |
| バケットの最大数を返す (public member function) | |
| 特定のバケット内の要素数を返す (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)(C++20で削除) |
unordered_multimap 内の値を比較する (function template) |
| std::swap アルゴリズムを特殊化する (関数テンプレート) | |
| 特定の基準を満たすすべての要素を削除する (関数テンプレート) |
推論補助 |
(C++17以降) |
[編集] ノート
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | コンテナのRangeコンストラクタとRange挿入 |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::unordered_multimap |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2050 | C++11 | reference、const_reference、pointer、および const_pointer の定義が allocator_type に基づいていた |
value_type およびstd::allocator_traits に基づくように変更 |
[編集] 関連項目
| (C++11) |
キーによってハッシュ化されたキーと値のペアのコレクション、キーはユニーク (クラステンプレート) |
| キーによってソートされたキーと値のペアのコレクション (クラステンプレート) | |
| (C++23) |
2つのコンテナを適応させて、キーでソートされたキーと値のペアのコレクションを提供する (クラステンプレート) |