std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert
From cppreference.net
<
cpp
|
container
|
flat multimap
|
iterator insert
(
const
value_type
&
value
)
;
|
(1) | (C++23以降) |
|
iterator insert
(
value_type
&&
value
)
;
|
(2) | (C++23以降) |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(3) | (C++23以降) |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (C++23以降) |
|
template
<
class
P
>
iterator insert ( P && x ) ; |
(5) | (C++23以降) |
|
template
<
class
P
>
iterator insert ( const_iterator pos, P && x ) ; |
(6) | (C++23以降) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(7) | (C++23以降) |
|
template
<
class
InputIt
>
void insert ( std:: sorted_equivalent_t , InputIt first, InputIt last ) ; |
(8) | (C++23以降) |
|
void
insert
(
std::
initializer_list
<
key_type
>
ilist
)
;
|
(9) | (C++23以降) |
|
void
insert
(
std::
sorted_equivalent_t
s,
std::
initializer_list
<
key_type
>
ilist
)
;
|
(10) | (C++23以降) |
要素をコンテナに挿入します。
1)
value
を挿入します。
return
emplace
(
value
)
;
と等価です。
2)
value
を挿入します。
return
emplace
(
std
::
move
(
value
)
)
;
と等価です。
3)
pos
の直前の位置にできるだけ近い位置に
value
を挿入します。
return
emplace_hint
(
pos, value
)
;
と等価です。
4)
value
を
pos
の直前の位置に可能な限り近い位置に挿入します。
return
emplace_hint
(
pos, std
::
move
(
value
)
)
;
と等価です。
5)
x
を
*
this
に、以下のように挿入します:
emplace
(
std::
forward
<
P
>
(
x
)
)
;
このオーバーロードは、
std::
is_constructible_v
<
pair
<
key_type, mapped_type
>
, P
>
が
true
の場合にのみ、オーバーロード解決に参加します。
6)
x
を
*
this
に、
pos
の直前の位置にできるだけ近い位置に挿入します。
return
emplace_hint
(
position,
std::
forward
<
P
>
(
x
)
)
;
と等価です。このオーバーロードは、
std::
is_constructible_v
<
pair
<
key_type, mapped_type
>
, P
>
が
true
の場合にのみオーバーロード解決に参加します。
7)
範囲
[
first
,
last
)
から要素を挿入します。以下の操作を順次実行するかのように動作します:
-
以下のように
cに要素を追加します:
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} -
新しく挿入された要素の範囲を
value_compに従ってソートします。 - 結果として得られたソート済み範囲と既存の要素のソート済み範囲を単一のソート済み範囲にマージします。
インプレースマージ操作中にメモリを割り当てる可能性があります。
8)
範囲
[
first
,
last
)
から要素を挿入し、以下の操作を順次実行するかのように動作します:
-
以下のように
cに要素を追加します:
for ( ; first ! = last ; ++ first )
{
value_type value = * first ;
c. keys . insert ( c. keys . end ( ) , std :: move ( value. first ) ) ;
c. values . insert ( c. values . end ( ) , std :: move ( value. second ) ) ;
} - 新しく追加された要素のソート済み範囲と既存の要素のソート済み範囲を単一のソート済み範囲にマージします。
インプレースマージ操作中にメモリを割り当てる可能性があります。
9)
初期化リスト
ilist
から要素を挿入します。
insert
(
ilist.
begin
(
)
, ilist.
end
(
)
)
;
と等価です。
10)
初期化子リスト
ilist
から要素を挿入します。
insert
(
s, ilist.
begin
(
)
, ilist.
end
(
)
)
;
と同等です。
| イテレータの無効化に関する情報は こちら からコピーされています |
目次 |
パラメータ
| pos | - | 新しい要素が挿入される位置の前を指すイテレータ |
| value | - | 挿入する要素の値 |
| first, last | - | 挿入する要素のソース範囲を定義するイテレータのペア range |
| ilist | - | 値の挿入元となる初期化子リスト |
| x | - | キーと透過的に比較可能な任意の型の値 |
| s | - |
入力シーケンスがソート済みであることを示す識別タグ(
value_comp()
に関して)
|
| 型要件 | ||
-
InputIt
は
LegacyInputIterator
の要件を満たさなければならない
|
||
戻り値
1-6)
挿入された要素へのイテレータ。
7-10)
(なし)
例外
1-6)
いずれかの操作によって例外がスローされた場合、挿入は無効となります。
7-10)
例外安全性保証なし。(?)
|
このセクションは不完全です
理由: ケース7-10を再確認してください |
計算量
1-6)
size()
に対して線形。
8)
size()
に対して線形。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
要素をその場で構築する
(公開メンバ関数) |
|
|
ヒントを使用して要素をその場で構築する
(公開メンバ関数) |
|
|
引数から推論された型の
std::insert_iterator
を作成する
(関数テンプレート) |