名前空間
変種
操作

std::flat_multimap

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


std::flat_multimapContainerReversibleContainerオプションのコンテナ要件、および AssociativeContainer のすべての要件 (対数検索複雑度を含む) を満たします。

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

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

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

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

(C++26以降)

目次

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

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

Key - キーの型。KeyKeyContainer::value_type と同じ型でない場合、プログラムは ill-formed です。
T - マップされた値の型。TMappedContainer::value_type と同じ型でない場合、プログラムは ill-formed です。
Compare - 厳密な弱順序を提供するCompare型。
KeyContainer
MappedContainer
- キーとマップされた値をそれぞれ格納するための基盤となる SequenceContainer の型。これらのコンテナのイテレータは LegacyRandomAccessIterator を満たすか、random_access_iterator をモデル化する必要があります。そのメンバ関数 size および max_size の呼び出しは例外をスローして終了しないはずです。

標準コンテナのstd::vectorstd::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 実装定義の LegacyInputIteratorConstexprIterator(C++26 以降) および value_type への random_access_iterator[編集]
const_iterator 実装定義の LegacyInputIteratorConstexprIterator(C++26 以降) および const value_type への random_access_iterator[編集]
reverse_iterator std::reverse_iterator<iterator>[編集]
const_reverse_iterator std::reverse_iterator<const_iterator>[編集]
コンテナ 基盤となるコンテナを記述する型

struct containers
{
    key_container_type keys;
    mapped_container_type values;
};
[編集]

[編集] メンバクラス

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

[編集] メンバオブジェクト

メンバ 説明
containers c (private) 適応されたコンテナ
(説明用のメンバオブジェクト*)
key_compare compare (private) 比較関数オブジェクト
(説明用のメンバオブジェクト*)

[編集] メンバ関数

flat_multimap を構築する
(公開メンバ関数) [編集]
(デストラクタ)
(暗黙的に宣言)
コンテナアダプタのすべての要素を破棄する
(public member function)
コンテナアダプタに値を割り当てる
(公開メンバ関数) [編集]
イテレータ
先頭へのイテレータを返す
(public メンバ関数) [編集]
末尾へのイテレータを返す
(public メンバ関数) [編集]
先頭への逆イテレータを返す
(public メンバ関数) [編集]
末尾への逆イテレータを返す
(public メンバ関数) [編集]
容量
コンテナアダプタが空かどうかをチェックする
(public メンバ関数) [編集]
要素数を返す
(public メンバ関数) [編集]
可能な最大要素数を返す
(public メンバ関数) [編集]
変更
要素を直接構築する
(公開メンバ関数) [編集]
ヒントを使用して要素を直接構築する
(公開メンバ関数) [編集]
要素を挿入する
(公開メンバ関数) [編集]
要素の範囲を挿入する
(公開メンバ関数) [編集]
基底コンテナを抽出する
(公開メンバ関数) [編集]
基底コンテナを置き換える
(public member function) [編集]
要素を削除する
(公開メンバ関数) [編集]
内容を交換する
(public メンバ関数) [編集]
内容をクリアする
(公開メンバ関数) [編集]
検索
特定のキーを持つ要素を検索する
(公開メンバ関数) [編集]
特定のキーに一致する要素の数を返す
(公開メンバ関数) [編集]
コンテナが特定のキーを持つ要素を含むか確認する
(公開メンバ関数) [編集]
指定されたキーより小さくない最初の要素へのイテレータを返す
(公開メンバ関数) [編集]
指定されたキーより大きい最初の要素へのイテレータを返す
(公開メンバ関数) [編集]
特定のキーに一致する要素の範囲を返す
(公開メンバ関数) [編集]
監視
キーを比較する関数を返す
(公開メンバ関数) [編集]
value_type 型のオブジェクト内のキーを比較する関数を返す
(公開メンバ関数) [編集]
基底キーコンテナへの直接アクセス
(public member function) [編集]
基底値コンテナへの直接アクセス
(public member function) [編集]

[編集] 非メンバ関数

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

[編集] ヘルパークラス

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

[編集] タグ

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

[編集] 推論ガイド

[編集] 注釈

メンバ型 iteratorconst_iterator は同じ型へのエイリアスかもしれない。これは、これら2つの型をパラメータ型として使用する関数オーバーロードのペアを定義すると、ODR (One Definition Rule) に違反する可能性があることを意味する。iteratorconst_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_multimap

[編集]

[編集] 関連項目

(C++23)
ユニークなキーによってソートされたキーと値のペアのコレクションを提供するために2つのコンテナを適合させる
(クラステンプレート) [編集]
キーによってソートされたキーと値のペアのコレクション
(クラステンプレート) [編集]
キーでハッシュ化されたキーと値のペアのコレクション
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)