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