名前空間
変種
操作

std::flat_multiset

From cppreference.com
< cpp‎ | container
 
 
 
 
ヘッダ <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要件を使用するすべての箇所で、一意性は同値関係を使用して決定されます。非公式には、2つのオブジェクトabは、どちらも他方より小さいとみなされない場合、つまり!comp(a, b) && !comp(b, a)の場合に同等であるとみなされます。


std::flat_multiset は、ContainerReversibleContainerオプションのコンテナ要件、およびAssociativeContainer のすべての要件 (対数検索の複雑さを含む) を満たしますが、以下の点を除きます。

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

flat multiset は、等しいキーを使用するほとんどのAssociativeContainer の操作をサポートします。

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

ただし、動的に割り当てられたストレージは同じ定数式評価で解放する必要があるため、std::flat_multiset オブジェクトは一般的に constexpr にすることはできません。

(C++26以降)

目次

[編集] イテレータの無効化

[編集] テンプレートパラメータ

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

標準コンテナのstd::vectorstd::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 実装定義の LegacyRandomAccessIteratorConstexprIterator(C++26 以降) および value_type へのrandom_access_iterator[編集]
const_iterator const value_typeへの、処理系定義のLegacyRandomAccessIteratorConstexprIterator(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 型のオブジェクト内のキーを比較する関数を返す
(公開メンバ関数) [編集]

[編集] 非メンバ関数

2つの flat_multiset の値を辞書式に比較します
(関数テンプレート) [編集]
std::swap アルゴリズムを特殊化する
(関数テンプレート) [編集]
特定の基準を満たすすべての要素を削除する
(関数テンプレート) [編集]

[編集] ヘルパークラス

std::uses_allocator 型特性を特殊化する
(クラス テンプレート特殊化) [edit]

[編集] タグ

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

[編集] 推論ガイド

[編集] 備考

メンバ型 iteratorconst_iterator は同じ型へのエイリアスかもしれない。これは、これら2つの型をパラメータ型として使用する関数オーバーロードのペアを定義すると、ODR (One Definition Rule) に違反する可能性があることを意味する。iteratorconst_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) [編集]
キーによってソートされたキーのコレクション
(クラステンプレート) [編集]
キーのコレクション、キーによってハッシュ化される
(class template) [編集]
English 日本語 中文(简体) 中文(繁體)