Namespaces
Variants

std:: flat_multimap

From cppreference.net
ヘッダーで定義 <flat_map>
template <

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

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

flat_multimapは、 コンテナアダプタ であり、同じキー値を持つ複数のエントリを許可しながら、キーと値のペアを含む連想コンテナの機能を提供します。キーは比較関数 Compare を使用してソートされます。

クラステンプレート flat_multimap は、 KeyContainer および MappedContainer 型のオブジェクトとして渡される2つの基盤となるコンテナのラッパーとして機能します。最初のコンテナはソートされ、各キーに対応する値は同じインデックス(オフセット)の2番目のコンテナに格納されます。両方のコンテナの要素数は同じです。

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


std::flat_multimap は、 Container ReversibleContainer オプションのコンテナ要件 の要件を満たし、さらに AssociativeContainer のすべての要件(対数検索計算量を含む)を満たします。ただし以下の例外を除きます:

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

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

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

ただし、 std::flat_multimap オブジェクトは一般的に constexpr にはできません。なぜなら、動的に割り当てられたストレージは同じ定数式の評価内で解放されなければならないためです。

(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以降) かつ random_access_iterator value_type を指すもの
const_iterator 実装定義 LegacyInputIterator , ConstexprIterator (C++26以降) かつ random_access_iterator const value_type を指すもの
reverse_iterator std:: reverse_iterator < iterator >
const_reverse_iterator std:: reverse_iterator < const_iterator >
containers 基盤となるコンテナを記述する型

struct containers
{
key_container_type keys ;
mapped_container_type values ;
} ;

メンバークラス

value_type 型のオブジェクトを比較する
(クラス)

メンバーオブジェクト

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

メンバー関数

flat_multimap を構築する
(公開メンバ関数)
(destructor)
(implicitly declared)
コンテナアダプタの全要素を破棄する
(public member function)
コンテナアダプタに値を代入する
(公開メンバ関数)
イテレータ
先頭を指すイテレータを返す
(公開メンバ関数)
終端へのイテレータを返す
(公開メンバ関数)
先頭を指す逆方向イテレータを返す
(public member function)
末尾を指す逆方向イテレータを返す
(public member function)
容量
コンテナアダプタが空かどうかをチェックする
(公開メンバ関数)
要素数を返す
(公開メンバ関数)
格納可能な最大要素数を返す
(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_multimap の値を辞書順で比較する
(関数テンプレート)
std::swap アルゴリズムを特殊化する
(関数テンプレート)
特定の条件を満たすすべての要素を削除する
(関数テンプレート)

ヘルパークラス

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

タグ

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

推論ガイド

注記

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

機能テスト マクロ 標準 機能
__cpp_lib_flat_map 202207L (C++23) std::flat_map および std::flat_multimap
__cpp_lib_constexpr_flat_map 202502L (C++26) constexpr std::flat_multimap

関連項目

(C++23)
2つのコンテナを適応させ、一意のキーでソートされたキーと値のペアのコレクションを提供する
(クラステンプレート)
キーでソートされたキーと値のペアのコレクション
(クラステンプレート)
キーでハッシュ化されたキーと値のペアのコレクション
(クラステンプレート)