Namespaces
Variants

std:: flat_multiset

From cppreference.net
定義先ヘッダ <flat_set>
template <

class Key,
class Compare = std:: less < Key > ,
class KeyContainer = std:: vector < Key >

> class flat_multiset ;
(C++23以降)

flat multisetは、 コンテナアダプタ であり、 Key 型のオブジェクトをソートされた集合として格納する連想コンテナの機能を提供します。 std::flat_set とは異なり、等価な値を持つ複数のキーが許可されます。ソートはキー比較関数 Compare を使用して行われます。

クラステンプレート flat_multiset は、 KeyContainer 型のオブジェクトとして渡される基盤のソート済みコンテナに対するラッパーとして機能します。

標準ライブラリが Compare 要件を使用するすべての場所では、一意性は同値関係を用いて決定されます。非公式には、二つのオブジェクト a b は、互いが他方より小さいと比較されない場合に同値と見なされます: ! comp ( a, b ) && ! comp ( b, a )


std::flat_multiset は以下の要件を満たす: Container ReversibleContainer オプションのコンテナ要件 、および AssociativeContainer の全要件(対数検索計算量を含む)。ただし以下の例外を除く:

  • ノードに関連する要件は適用されません、
  • イテレータの無効化要件が異なります、
  • 挿入および削除操作の計算量は線形です。

フラットマルチセットは、等しいキーを使用する AssociativeContainer の操作のほとんどをサポートします。

std::flat_multisetのすべてのメンバー関数は std::flat_multiset constexpr です:定数式の評価中に std::flat_multiset オブジェクトを作成して使用することが可能です。

しかしながら、 std::flat_multiset オブジェクト自体は一般的に constexpr にはできません。なぜなら、動的に確保されたストレージは同じ定数式の評価中に解放されなければならないためです。

(C++26以降)

目次

イテレータの無効化

テンプレートパラメータ

Key - 格納される要素の型。 Key KeyContainer::value_type と同じ型でない場合、プログラムは不適格となる。
Compare - 厳密な弱順序を提供する Compare 型。
KeyContainer - 要素を格納する基盤となる SequenceContainer の型。そのようなコンテナのイテレータは LegacyRandomAccessIterator を満たすか、 random_access_iterator をモデル化する必要がある。

標準コンテナの std::vector および std::deque はこれらの要件を満たす。

メンバー型

定義
container_type Key Container
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以降) かつ random_access_iterator value_type を指す
const_iterator 実装定義 LegacyRandomAccessIterator , ConstexprIterator (C++26以降) かつ random_access_iterator const value_type を指す
reverse_iterator std:: reverse_iterator < iterator >
const_reverse_iterator std:: reverse_iterator < const_iterator >

メンバーオブジェクト

メンバー 説明
container_type c (private) アダプトされたコンテナ
( 説明専用メンバーオブジェクト* )
key_compare compare (private) 比較関数オブジェクト
( 説明専用メンバーオブジェクト* )

メンバー関数

flat_multiset を構築する
(公開メンバ関数)
(destructor)
(implicitly declared)
コンテナアダプタの全要素を破棄する
(public member function)
コンテナアダプタに値を代入する
(公開メンバ関数)
イテレータ
先頭を指すイテレータを返す
(公開メンバ関数)
終端へのイテレータを返す
(公開メンバ関数)
先頭への逆方向イテレータを返す
(公開メンバ関数)
末尾を指す逆方向イテレータを返す
(公開メンバ関数)
容量
コンテナアダプタが空かどうかをチェックする
(public member function)
要素数を返す
(公開メンバ関数)
格納可能な最大要素数を返す
(公開メンバ関数)
修飾子
要素をその場で構築する
(公開メンバ関数)
ヒントを使用して要素をその場で構築する
(公開メンバ関数)
要素を挿入する
(公開メンバ関数)
要素の範囲を挿入する
(公開メンバ関数)
基となるコンテナを抽出する
(公開メンバ関数)
基となるコンテナを置き換える
(公開メンバ関数)
要素を削除する
(公開メンバ関数)
内容を交換する
(public member function)
内容をクリアする
(公開メンバ関数)
ルックアップ
特定のキーを持つ要素を検索
(public member function)
指定されたキーにマッチする要素の数を返す
(public member function)
指定されたキーを持つ要素がコンテナに含まれているかどうかをチェックします
(public member function)
指定されたキーより 小さくない 最初の要素へのイテレータを返す
(公開メンバ関数)
指定されたキーより 大きい 最初の要素へのイテレータを返す
(公開メンバ関数)
特定のキーに一致する要素の範囲を返す
(公開メンバ関数)
オブザーバー
キーを比較する関数を返す
(公開メンバ関数)
value_type 型のオブジェクト内でキーを比較する関数を返す
(public member function)

非メンバー関数

2つの flat_multiset の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)
特定の条件を満たすすべての要素を削除する
(関数テンプレート)

ヘルパークラス

std::uses_allocator 型特性を特殊化
(クラステンプレートの特殊化)

タグ

範囲の要素がソートされていることを示す(一意性は必要とされない)
(タグ)

推論ガイド

注記

メンバ型 iterator const_iterator は同じ型のエイリアスである可能性があります。これは、これら2つの型をパラメータ型として使用する関数オーバーロードのペアを定義すると、 One Definition Rule に違反する可能性があることを意味します。 iterator const_iterator に変換可能であるため、代わりに const_iterator をパラメータ型とする単一の関数が機能します。

機能テスト マクロ 標準 機能
__cpp_lib_flat_set 202207L (C++23) std::flat_set および std::flat_multiset
__cpp_lib_constexpr_flat_set 202502L (C++26) constexpr std::flat_multiset

関連項目

(C++23)
コンテナをアダプトして、キーでソートされた一意のキーのコレクションを提供する
(クラステンプレート)
キーのコレクション、キーでソート
(クラステンプレート)
キーのコレクション、キーでハッシュ化
(クラステンプレート)