std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: insert
From cppreference.net
<
cpp
|
container
|
unordered multimap
|
ヘッダーで定義
<unordered_map>
|
||
|
iterator insert
(
const
value_type
&
value
)
;
|
(1) | (C++11以降) |
|
iterator insert
(
value_type
&&
value
)
;
|
(2) | (C++17以降) |
|
template
<
class
P
>
iterator insert ( P && value ) ; |
(3) | (C++11以降) |
|
iterator insert
(
const_iterator hint,
const
value_type
&
value
)
;
|
(4) | (C++11以降) |
|
iterator insert
(
const_iterator hint, value_type
&&
value
)
;
|
(5) | (C++17以降) |
|
template
<
class
P
>
iterator insert ( const_iterator hint, P && value ) ; |
(6) | (C++11以降) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(7) | (C++11以降) |
|
void
insert
(
std::
initializer_list
<
value_type
>
ilist
)
;
|
(8) | (C++11以降) |
|
iterator insert
(
node_type
&&
nh
)
;
|
(9) | (C++17以降) |
|
iterator insert
(
const_iterator hint, node_type
&&
nh
)
;
|
(10) | (C++17以降) |
要素をコンテナに挿入します。
1-3)
value
を挿入します。
オーバーロード
(3)
は
emplace
(
std::
forward
<
P
>
(
value
)
)
と等価であり、
std::
is_constructible
<
value_type, P
&&
>
::
value
==
true
の場合にのみオーバーロード解決に参加します。
4-6)
value
を挿入します。
hint
は検索を開始すべき位置に関する非拘束的な提案として使用されます。
オーバーロード
(6)
は
emplace_hint
(
hint,
std::
forward
<
P
>
(
value
)
)
と等価であり、
std::
is_constructible
<
value_type, P
&&
>
::
value
==
true
の場合にのみオーバーロード解決に参加します。
7)
範囲
[
first
,
last
)
から要素を挿入します。
8)
初期化子リストから要素を挿入
ilist
。
9)
nh
が空の
node handle
の場合、何も行わない。それ以外の場合、
nh
が所有する要素をコンテナに挿入し、挿入された要素を指すイテレータを返す。
nh
が空でなく、かつ
get_allocator
(
)
!
=
nh.
get_allocator
(
)
の場合、動作は未定義である。
10)
nh
が空の
node handle
の場合、何もせずに終端イテレータを返す。それ以外の場合、
nh
が所有する要素をコンテナに挿入し、
nh.
key
(
)
と等価なキーを持つ要素を指すイテレータを返す。
hint
は検索を開始すべき位置に対する非拘束的な提案として使用される。
nh
が空でなく、かつ
get_allocator
(
)
!
=
nh.
get_allocator
(
)
の場合、動作は未定義である。
操作後、新しい要素数が元の
max_load_factor()
*
bucket_count()
より大きい場合、リハッシュが発生します。
リハッシュが発生した場合(挿入による)、すべてのイテレータは無効化されます。それ以外の場合(リハッシュなし)、イテレータは無効化されません。
挿入が成功した場合、ノードハンドル内に保持されている間に取得された要素へのポインタと参照は無効化され、抽出前にその要素に対して取得されたポインタと参照は有効になります。
(C++17以降)
目次 |
パラメータ
| hint | - | イテレータ、コンテンツを挿入する位置のヒントとして使用 |
| value | - | 挿入する要素の値 |
| first, last | - | 挿入する要素のソース範囲を定義するイテレータのペア range |
| ilist | - | 値を挿入する初期化子リスト |
| nh | - | 互換性のある node handle |
| 型要件 | ||
-
InputIt
は
LegacyInputIterator
の要件を満たさなければならない。
|
||
戻り値
1-6)
挿入された要素へのイテレータ。
7,8)
(なし)
9,10)
nh
が空の場合終了イテレータ、それ以外の場合挿入された要素を指すイテレータ。
例外
1-6)
何らかの理由で例外がスローされた場合、これらの関数は何も効果を持ちません(
strong exception safety guarantee
)。
7,8)
例外安全性保証なし。
9,10)
何らかの理由で例外がスローされた場合、これらの関数は何も効果を持ちません(
strong exception safety guarantee
)。
計算量
1-6)
平均ケース:
O(1)
、最悪ケース
O(size())
。
7,8)
平均ケース:
O(N)
(Nは挿入する要素の数)。最悪ケース:
O(N * size() + N)
。
9,10)
平均ケース:
O(1)
、最悪ケース
O(size())
。
例
|
このセクションは不完全です
理由: 例がありません |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2005 | C++11 |
オーバーロード
(3,6)
は
P
が
value_type
に暗黙的に変換可能な場合のみ
オーバーロード解決に参加する |
value_type
が
P&&
から構築可能な場合のみ
参加する |
関連項目
|
要素をその場で構築する
(公開メンバ関数) |
|
|
ヒントを使用して要素をその場で構築する
(公開メンバ関数) |
|
|
引数から推論された型の
std::insert_iterator
を作成する
(関数テンプレート) |