std::flat_map
| ヘッダ <flat_map> で定義 |
||
| template< class Key, |
(C++23から) | |
flat mapは、一意なキーを持つキーと値のペアを格納する連想コンテナの機能を提供するコンテナアダプタです。キーは比較関数`Compare`を使用してソートされます。
クラステンプレート`flat_map`は、それぞれ`KeyContainer`型と`MappedContainer`型のオブジェクトとして渡される2つの基底コンテナのラッパーとして機能します。最初のコンテナはソートされ、各キーに対応する値は同じインデックス(オフセット)の2番目のコンテナに格納されます。両方のコンテナの要素数は同じです。
標準ライブラリがCompare要件を使用するすべての箇所で、一意性は同値関係を使用して決定されます。非公式には、2つのオブジェクトaとbは、どちらも他方より小さいとみなされない場合、つまり!comp(a, b) && !comp(b, a)の場合に同等であるとみなされます。
std::flat_mapは、Container、ReversibleContainer、オプションのコンテナ要件、およびAssociativeContainerのすべての要件(対数探索複雑度を含む)を満たしますが、以下の点を除きます。
- ノードに関連する要件は適用されません。
- イテレータの無効化要件が異なります。
- 挿入および削除操作の複雑度は線形です。
flat mapは、一意なキーを使用するほとんどのAssociativeContainerの操作をサポートしています。
|
|
(C++26以降) |
目次 |
[編集] イテレータの無効化
| このセクションは未完成です |
[編集] テンプレートパラメータ
| Key | - | キーの型。`Key`が`KeyContainer::value_type`と同じ型でない場合、プログラムは不正です。 |
| T | - | マップされた値の型。`T`が`MappedContainer::value_type`と同じ型でない場合、プログラムは不正です。 |
| 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_mapを構築する(公開メンバ関数) | |
| (デストラクタ) (暗黙的に宣言) |
コンテナアダプタのすべての要素を破棄する (public member function) |
| コンテナアダプタに値を割り当てる (公開メンバ関数) | |
要素アクセス | |
| 境界チェック付きで指定された要素にアクセスする (public メンバ関数) | |
| 指定された要素にアクセスまたは挿入する (public メンバ関数) | |
イテレータ | |
| 先頭へのイテレータを返す (public メンバ関数) | |
| 末尾へのイテレータを返す (public メンバ関数) | |
| 先頭への逆イテレータを返す (public メンバ関数) | |
| 末尾への逆イテレータを返す (public メンバ関数) | |
容量 | |
| コンテナアダプタが空かどうかをチェックする (public メンバ関数) | |
| 要素数を返す (public メンバ関数) | |
| 可能な最大要素数を返す (public メンバ関数) | |
変更 | |
| 要素を直接構築する (公開メンバ関数) | |
| ヒントを使用して要素を直接構築する (公開メンバ関数) | |
| キーが存在しない場合はインプレースで挿入し、キーが存在する場合は何もしない (public member function) | |
| 要素を挿入する (公開メンバ関数) | |
| 要素の範囲を挿入する (公開メンバ関数) | |
| 要素を挿入するか、キーが既に存在する場合は現在の要素に代入する (public member function) | |
| 基底コンテナを抽出する (公開メンバ関数) | |
| 基底コンテナを置き換える (public member function) | |
| 要素を削除する (公開メンバ関数) | |
| 内容を交換する (public メンバ関数) | |
| 内容をクリアする (公開メンバ関数) | |
検索 | |
| 特定のキーを持つ要素を検索する (公開メンバ関数) | |
| 特定のキーに一致する要素の数を返す (公開メンバ関数) | |
| コンテナが特定のキーを持つ要素を含むか確認する (公開メンバ関数) | |
| 指定されたキーより小さくない最初の要素へのイテレータを返す (公開メンバ関数) | |
| 指定されたキーより大きい最初の要素へのイテレータを返す (公開メンバ関数) | |
| 特定のキーに一致する要素の範囲を返す (公開メンバ関数) | |
監視 | |
| キーを比較する関数を返す (公開メンバ関数) | |
value_type 型のオブジェクト内のキーを比較する関数を返す(公開メンバ関数) | |
| 基底キーコンテナへの直接アクセス (public member function) | |
| 基底値コンテナへの直接アクセス (public member function) | |
[編集] 非メンバー関数
| (C++23) |
2つのflat_mapの値の辞書順比較(関数テンプレート) |
| (C++23) |
std::swap アルゴリズムを特殊化する (関数テンプレート) |
| (C++23) |
特定の基準を満たすすべての要素を削除する (関数テンプレート) |
[編集] ヘルパークラス
| std::uses_allocator 型特性を特殊化する (クラス テンプレート特殊化) |
[編集] タグ
| (C++23) |
範囲の要素がソートされ、一意であることを示す (タグ) |
[編集] 推論ガイド
[編集] 注釈
メンバ型 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_map |
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++23) |
2つのコンテナを適応させて、キーでソートされたキーと値のペアのコレクションを提供する (クラステンプレート) |
| キーでソートされたキーと値のペアのコレクション、キーは一意 (クラステンプレート) | |
| (C++11) |
キーによってハッシュ化されたキーと値のペアのコレクション、キーはユニーク (クラステンプレート) |