Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: flat_multimap

From ja.cppreference.net

(注:指定されたHTML要素には翻訳対象のテキストコンテンツが含まれていないため、出力は入力と同一となります)
flat_multimap ( )
: flat_multimap ( key_compare ( ) ) { }
(1) (C++23以降)
template < class Allocator >
flat_multimap ( const flat_multimap & , const Allocator & alloc ) ;
(2) (C++23以降)
template < class Allocator >
flat_multimap ( flat_multimap && , const Allocator & alloc ) ;
(3) (C++23以降)
flat_multimap ( key_container_type key_cont, mapped_container_type mapped_cont,
const key_compare & comp = key_compare ( ) ) ;
(4) (C++23以降)
template < class Allocator >

flat_multimap ( const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

const Allocator & alloc ) ;
(5) (C++23以降)
template < class Allocator >

flat_multimap ( const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

const key_compare & comp, const Allocator & alloc ) ;
(6) (C++23以降)
flat_multimap ( std:: sorted_equivalent_t , key_container_type key_cont,

mapped_container_type mapped_cont,

const key_compare & comp = key_compare ( ) ) ;
(7) (C++23以降)
template < class Allocator >

flat_multimap ( std:: sorted_equivalent_t , const key_container_type & key_cont,

const mapped_container_type & mapped_cont, const Allocator & alloc ) ;
(8) (C++23以降)
template < class Allocator >

flat_multimap ( std:: sorted_equivalent_t , const key_container_type & key_cont,
const mapped_container_type & mapped_cont,

const key_compare & comp, const Allocator & alloc ) ;
(9) (C++23以降)
explicit flat_multimap ( const key_compare & comp )
: c ( ) , compare ( comp ) { }
(10) (C++23以降)
template < class Allocator >
flat_multimap ( const key_compare & comp, const Allocator & alloc ) ;
(11) (C++23以降)
template < class Allocator >
explicit flat_multimap ( const Allocator & alloc ) ;
(12) (C++23以降)
template < class InputIter >

flat_multimap ( InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( ) , compare ( comp ) ;
(13) (C++23以降)
template < class InputIter, class Allocator >

flat_multimap ( InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(14) (C++23以降)
template < class InputIter, class Allocator >
flat_multimap ( InputIter first, InputIter last, const Allocator & alloc ) ;
(15) (C++23以降)
template < container-compatible-range < value_type > R >

flat_multimap ( std:: from_range_t , R && rg, const key_compare & comp )

: flat_multimap ( comp ) ;
(16) (C++23以降)
template < container-compatible-range < value_type > R >

flat_multimap ( std:: from_range_t fr, R && rg )

: flat_multimap ( fr, std:: forward < R > ( rg ) , key_compare ( ) ) { }
(17) (C++23以降)
template < container-compatible-range < value_type > R, class Allocator >
flat_multimap ( std:: from_range_t , R && rg, const Allocator & alloc ) ;
(18) (C++23以降)
template < container-compatible-range < value_type > R, class Allocator >

flat_multimap ( std:: from_range_t , R && rg, const key_compare & comp,

const Allocator & alloc ) ;
(19) (C++23以降)
template < class InputIter >

flat_multimap ( std:: sorted_equivalent_t s, InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( ) , compare ( comp ) ;
(20) (C++23以降)
template < class InputIter, class Allocator >

flat_multimap ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(21) (C++23以降)
template < class InputIter, class Allocator >

flat_multimap ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

const Allocator & alloc ) ;
(22) (C++23以降)
flat_multimap ( std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_multimap ( init. begin ( ) , init. end ( ) , comp ) { }
(23) (C++23以降)
template < class Allocator >

flat_multimap ( std:: initializer_list < value_type > init, const key_compare & comp,

const Allocator & alloc ) ;
(24) (C++23以降)
template < class Allocator >
flat_multimap ( std:: initializer_list < value_type > init, const Allocator & alloc ) ;
(25) (C++23以降)
flat_multimap ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_multimap ( s, init. begin ( ) , init. end ( ) , comp ) { }
(26) (C++23以降)
template < class Allocator >

flat_multimap ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const key_compare & comp, const Allocator & alloc ) ;
(27) (C++23以降)
template < class Allocator >

flat_multimap ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const Allocator & alloc ) ;
(28) (C++23以降)

様々なデータソースから新しいコンテナアダプタを構築し、オプションでユーザー提供の比較関数オブジェクト comp および/またはアロケータ alloc を使用します。

1) デフォルトコンストラクタ。空のコンテナアダプタを構築します。
2) コピーコンストラクタ。 copy constructor 。 c を other. c の内容のコピーで構築し、 compare を other. compare で構築する。 以下の allocator usage note を参照。
3) ムーブコンストラクタ。コンテナアダプタを other の内容でムーブセマンティクスを使用して構築します。 以下の allocator usage note を参照してください。
4) まず、 c.keys を std :: move ( key_cont ) で初期化し、 c.values を std :: move ( mapped_cont ) で初期化し、 compare を comp で初期化します。その後、基になる範囲 [ begin ( ) , end ( ) ) を value_comp() に関してソートします。
5) (4) と同様、 flat_multimap ( key_cont, mapped_cont ) ; と同等。 以下の allocator usage note を参照。
6) (4) と同様、 flat_multimap ( key_cont, mapped_cont, comp ) ; に相当します。 以下の allocator usage note を参照してください。
7) c.keys を std :: move ( key_cont ) で初期化し、 c.values を std :: move ( mapped_cont ) で初期化し、 compare を comp で初期化します。
8) (7) と同じく、以下と等価: flat_multimap ( s, key_cont, mapped_cont ) ; . 以下の allocator usage note を参照。
9) (7) と同様、 flat_multimap ( s, key_cont, mapped_cont, comp ) ; に相当します。 以下の allocator usage note を参照してください。
10) 空のコンテナアダプタを構築します。
11,12) 空のコンテナアダプタを構築します。 以下の allocator usage note を参照してください。
13) コンテナアダプタを範囲 [ first , last ) の内容で構築します。これは insert ( first, last ) ; と等価です。
14,15) (13) と同じ。 以下 allocator usage note を参照。
16) コンテナアダプタを範囲 rg の内容で構築します。まず、 (10) を 委譲コンストラクタ として使用します。その後、 c を rg の内容で初期化します。これは insert_range ( std:: forward < R > ( rg ) ) ; によって行われるかのように動作します。
17) (16) と同様に、 delegating constructor として使用する。
18,19) (16) と同じ。 以下 allocator usage note を参照。
20) 範囲 [ first , last ) の内容で基盤となるコンテナを構築します。これは insert ( first, last ) によって行われるかのようになります。
21,22) (20) と同じ。 以下 allocator usage note を参照。
23) 初期化子リストコンストラクタ。基底コンテナを初期化子リスト init の内容で構築し、 (13) を 委譲コンストラクタ として使用する。
24,25) (23) と同じ。 以下 allocator usage note を参照。
26) 初期化子リストコンストラクタ。基底コンテナを初期化子リスト init の内容で構築し、 (20) を 委譲コンストラクタ として使用する。
27,28) (26) として保存。 下記の allocator usage note を参照。

オーバーロードに関する注記 (13-15,20-22) : [ first , last ) が 有効な範囲 でない場合、動作は未定義です。

目次

アロケータ使用上の注意

コンストラクタ (2,3,5,6,8,9,11,12,14,15,17,19,21,22,24,25,27,28) は、対応する非アロケータコンストラクタと同等ですが、基盤となるコンテナ c.keys および c.values が uses-allocator construction で構築される点が異なります。 これらのオーバーロードは、 std:: uses_allocator_v < container_type, Allocator > が true の場合にのみオーバーロード解決に参加します。

パラメータ

key_cont - 基盤となるキーコンテナを初期化するためのソースとして使用するコンテナ
mapped_cont - 基盤となる値コンテナを初期化するためのソースとして使用するコンテナ
other - 基盤となるコンテナの要素を初期化するためのソースとして使用する別の flat_multimap
alloc - 基盤となるコンテナのすべてのメモリ割り当てに使用するアロケータ
comp - キーのすべての比較に使用する関数オブジェクト
first, last - コピーする要素のソース 範囲 を定義するイテレータのペア
init - 基盤となるコンテナの要素を初期化するための初期化子リスト
rg - 基盤となるコンテナを初期化するためのソースとして使用する コンテナ互換範囲 (つまり、 input_range であり、その要素が value_type に変換可能なもの)
fr - 含まれるメンバが範囲構築されるべきであることを示す 曖昧性解消タグ
s - 入力シーケンスが value_comp() に関してソートされていることを示す 曖昧性解消タグ
型要件
-
InputIt は LegacyInputIterator の要件を満たさなければならない。
-
Compare は Compare の要件を満たさなければならない。
-
Allocator は Allocator の要件を満たさなければならない。

計算量

1) 定数。
2) サイズが other に対して線形。
3) ラップされたコンテナの対応するムーブコンストラクタと同じ、すなわち cont のサイズに対して定数時間または線形時間。
4-6) N に対して線形時間( cont が value_comp() に関してソートされている場合)、それ以外の場合は 𝓞(N·log(N)) 時間。ここで N はこの呼び出し前の key_cont. size ( ) の値。
7-9) ラップされたコンテナの対応するムーブコンストラクタと同じ、すなわち cont のサイズに対して定数時間または線形時間。
10-12) 定数。
13-15) 入力範囲 [ first , last ) が value_comp() に関してソートされている場合は N に対して線形時間、それ以外の場合は 𝓞(N·log(N)) の計算量。ここで N はこの呼び出し前の key_cont. size ( ) の値。
16-19) 入力範囲 rg が value_comp() に関してソートされている場合は N に対して線形、それ以外の場合は 𝓞(N·log(N)) の計算量。ここで N はこの呼び出し前の key_cont. size ( ) の値。
20-22) [ first , last ) のサイズに対して線形。
23-25) N に対して線形( init の要素が value_comp() に関してソートされている場合)、それ以外の場合は 𝓞(N·log(N)) 。ここで N はこの呼び出し前の key_cont. size ( ) の値。
26-28) サイズは init に対して線形。

例外

Allocator::allocateへの呼び出しは例外をスローする可能性があります。

ノート

コンテナのムーブ構築(オーバーロード (3))の後、元々 other 内の要素を指していた参照、ポインタ、およびイテレータは引き続き有効ですが、現在は *this 内の要素を指すようになります。現在の標準では、[container.reqmts]/67 の包括的な記述によってこの保証が行われており、より直接的な保証が LWG issue 2321 を介して検討されています。

例

関連項目

コンテナアダプタに値を代入する
(公開メンバ関数)