std::flat_multimap
| ヘッダ <flat_map> で定義 |
||
| template< class Key, |
(C++23から) | |
flat multimapは、キーと値のペアを含む連想コンテナの機能を提供し、同じキー値を持つ複数のエントリを許可するコンテナアダプタです。キーは比較関数 Compare を使用してソートされます。
クラステンプレート flat_multimap は、それぞれ KeyContainer および MappedContainer 型のオブジェクトとして渡される2つの基盤となるコンテナのラッパーとして機能します。最初のコンテナはソートされ、各キーの対応する値は2番目のコンテナの同じインデックス(オフセット)にあります。両方のコンテナの要素数は同じです。
標準ライブラリがCompare要件を使用するすべての箇所で、一意性は同値関係を使用して決定されます。非公式には、2つのオブジェクトaとbは、どちらも他方より小さいとみなされない場合、つまり!comp(a, b) && !comp(b, a)の場合に同等であるとみなされます。
std::flat_multimap は Container、ReversibleContainer、オプションのコンテナ要件、および AssociativeContainer のすべての要件 (対数検索複雑度を含む) を満たします。
- ノードに関連する要件は適用されません。
- イテレータの無効化要件が異なります。
- 挿入および削除操作の複雑度は線形です。
flat multimap は、等しいキーを使用する AssociativeContainer のほとんどの操作をサポートします。
|
|
(C++26以降) |
目次 |
[編集] イテレータ無効化
| このセクションは未完成です |
[編集] テンプレートパラメータ
| Key | - | キーの型。Key が KeyContainer::value_type と同じ型でない場合、プログラムは ill-formed です。 |
| T | - | マップされた値の型。T が MappedContainer::value_type と同じ型でない場合、プログラムは ill-formed です。 |
| Compare | - | 厳密な弱順序を提供するCompare型。 |
| KeyContainer MappedContainer |
- | キーとマップされた値をそれぞれ格納するための基盤となる SequenceContainer の型。これらのコンテナのイテレータは LegacyRandomAccessIterator を満たすか、random_access_iterator をモデル化する必要があります。そのメンバ関数 size および max_size の呼び出しは例外をスローして終了しないはずです。標準コンテナのstd::vectorとstd::dequeはこれらの要件を満たします。 |
[編集] メンバ型
| 型 | 定義 |
key_container_type
|
KeyContainer |
mapped_container_type
|
MappedContainer |
key_type
|
Key |
mapped_type
|
T |
value_type
|
std::pair<key_type, mapped_type> |
key_compare
|
Compare |
reference
|
std::pair<const key_type&, mapped_type&> |
const_reference
|
std::pair<const key_type&, const mapped_type&> |
size_type
|
std::size_t |
difference_type
|
std::ptrdiff_t |
iterator
|
実装定義の LegacyInputIterator、ConstexprIterator(C++26 以降) および value_type への random_access_iterator |
const_iterator
|
実装定義の LegacyInputIterator、ConstexprIterator(C++26 以降) および const value_type への random_access_iterator |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
コンテナ
|
基盤となるコンテナを記述する型 struct containers |
[編集] メンバクラス
value_type 型のオブジェクトを比較する(クラス) |
[編集] メンバオブジェクト
| メンバ | 説明 |
containers c (private) |
適応されたコンテナ (説明用のメンバオブジェクト*) |
key_compare compare (private) |
比較関数オブジェクト (説明用のメンバオブジェクト*) |
[編集] メンバ関数
flat_multimap を構築する(公開メンバ関数) | |
| (デストラクタ) (暗黙的に宣言) |
コンテナアダプタのすべての要素を破棄する (public member function) |
| コンテナアダプタに値を割り当てる (公開メンバ関数) | |
イテレータ | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 末尾へのイテレータを返す (public メンバ関数) | |
| 先頭への逆イテレータを返す (public メンバ関数) | |
| 末尾への逆イテレータを返す (public メンバ関数) | |
容量 | |
| コンテナアダプタが空かどうかをチェックする (public メンバ関数) | |
| 要素数を返す (public メンバ関数) | |
| 可能な最大要素数を返す (public メンバ関数) | |
変更 | |
| 要素を直接構築する (公開メンバ関数) | |
| ヒントを使用して要素を直接構築する (公開メンバ関数) | |
| 要素を挿入する (公開メンバ関数) | |
| 要素の範囲を挿入する (公開メンバ関数) | |
| 基底コンテナを抽出する (公開メンバ関数) | |
| 基底コンテナを置き換える (public member function) | |
| 要素を削除する (公開メンバ関数) | |
| 内容を交換する (public メンバ関数) | |
| 内容をクリアする (公開メンバ関数) | |
検索 | |
| 特定のキーを持つ要素を検索する (公開メンバ関数) | |
| 特定のキーに一致する要素の数を返す (公開メンバ関数) | |
| コンテナが特定のキーを持つ要素を含むか確認する (公開メンバ関数) | |
| 指定されたキーより小さくない最初の要素へのイテレータを返す (公開メンバ関数) | |
| 指定されたキーより大きい最初の要素へのイテレータを返す (公開メンバ関数) | |
| 特定のキーに一致する要素の範囲を返す (公開メンバ関数) | |
監視 | |
| キーを比較する関数を返す (公開メンバ関数) | |
value_type 型のオブジェクト内のキーを比較する関数を返す(公開メンバ関数) | |
| 基底キーコンテナへの直接アクセス (public member function) | |
| 基底値コンテナへの直接アクセス (public member function) | |
[編集] 非メンバ関数
| (C++23) |
2つの flat_multimap の値を辞書順に比較する(関数テンプレート) |
| std::swap アルゴリズムを特殊化する (関数テンプレート) | |
| (C++23) |
特定の基準を満たすすべての要素を削除する (関数テンプレート) |
[編集] ヘルパークラス
| std::uses_allocator 型特性を特殊化する (クラス テンプレート特殊化) |
[編集] タグ
| 範囲の要素がソートされていることを示す (一意性は不要) (タグ) |
[編集] 推論ガイド
[編集] 注釈
メンバ型 iterator と const_iterator は同じ型へのエイリアスかもしれない。これは、これら2つの型をパラメータ型として使用する関数オーバーロードのペアを定義すると、ODR (One Definition Rule) に違反する可能性があることを意味する。iterator は const_iterator に変換可能なので、代わりに const_iterator をパラメータ型として持つ単一の関数が機能する。
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_flat_map |
202207L |
(C++23) | std::flat_map および std::flat_multimap |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::flat_multimap |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++23) |
ユニークなキーによってソートされたキーと値のペアのコレクションを提供するために2つのコンテナを適合させる (クラステンプレート) |
| キーによってソートされたキーと値のペアのコレクション (クラステンプレート) | |
| (C++11) |
キーでハッシュ化されたキーと値のペアのコレクション (クラステンプレート) |