Namespaces
Variants

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

From ja.cppreference.net

flat_map ( )
: flat_map ( key_compare ( ) ) { }
(1) (C++23以降)
template < class Allocator >
flat_map ( const flat_map & , const Allocator & alloc ) ;
(2) (C++23以降)
template < class Allocator >
flat_map ( flat_map && , const Allocator & alloc ) ;
(3) (C++23以降)
flat_map ( key_container_type key_cont, mapped_container_type mapped_cont,
const key_compare & comp = key_compare ( ) ) ;
(4) (C++23以降)
template < class Allocator >

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

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

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

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

mapped_container_type mapped_cont,

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

flat_map ( std:: sorted_unique_t , const key_container_type & key_cont,

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

flat_map ( std:: sorted_unique_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_map ( const key_compare & comp )
: c ( ) , compare ( comp ) { }
(10) (C++23以降)
template < class Allocator >
flat_map ( const key_compare & comp, const Allocator & alloc ) ;
(11) (C++23以降)
template < class Allocator >
explicit flat_map ( const Allocator & alloc ) ;
(12) (C++23以降)
template < class InputIter >

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

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

flat_map ( InputIter first, InputIter last,

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

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

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

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

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

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

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

flat_map ( std:: sorted_unique_t s, InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

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

flat_map ( std:: sorted_unique_t s, InputIter first, InputIter last,

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

flat_map ( std:: sorted_unique_t s, InputIter first, InputIter last,

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

const key_compare & comp = key_compare ( ) )

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

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

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

const key_compare & comp = key_compare ( ) )

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

flat_map ( std:: sorted_unique_t s, std:: initializer_list < value_type > init,

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

flat_map ( std:: sorted_unique_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 の内容でムーブセマンティクスを使用して構築します。 以下の アロケータ使用上の注意 を参照してください。
4) まず、 c.keys を std :: move ( key_cont ) で初期化し、 c.values を std :: move ( mapped_cont ) で初期化し、 compare を comp で初期化します。その後、基となる範囲 [ begin ( ) , end ( ) ) を value_comp() に関してソートします。最後に、以下のように重複要素を削除します:
auto zv = views:: zip ( c. keys , c. values ) ;
auto it = ranges:: unique ( zv, key_equiv ( compare ) ) . begin ( ) ;
auto dist = distance ( zv. begin ( ) , it ) ;
c. keys . erase ( c. keys . begin ( ) + dist, c. keys . end ( ) ) ;
c. values . erase ( c. values . begin ( ) + dist, c. values . end ( ) ) ;
。
5) (4) と同様、 flat_map ( key_cont, mapped_cont ) ; に相当します。 以下の アロケータ使用上の注意 を参照してください。
6) (4) と同様、 flat_map ( 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_map ( s, key_cont, mapped_cont ) ; に相当します。 以下の allocator usage note を参照してください。
9) (7) と同様、 flat_map ( 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) として保存。 下記の アロケータ使用上の注意 を参照。

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

Note for overloads (4-6,13-19,23-25) : If multiple elements in the range have keys that compare equivalent, it is unspecified which element is inserted (pending LWG2844 (注:このテキストはHTMLタグ内の表示テキストであり、LWG2844はC++標準ライブラリのIssue番号であるため、翻訳対象外としました) ).

目次

アロケータ使用上の注意

コンストラクタ (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_map
alloc - 基盤となるコンテナのすべてのメモリ割り当てに使用するアロケータ
comp - キーのすべての比較に使用する関数オブジェクト
first, last - コピーする要素のソース 範囲 を定義するイテレータのペア
init - 基盤となるコンテナの要素を初期化するための初期化子リスト
rg - 基盤となるコンテナを初期化するためのソースとして使用する コンテナ互換範囲 (つまり、要素が value_type に変換可能な input_range )
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 によって検討されています。

例

関連項目

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