Namespaces
Variants

std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1) (C++11以降)
iterator insert ( value_type && value ) ;
(2) (C++11以降)
iterator insert ( const_iterator hint, const value_type & value ) ;
(3) (C++11以降)
iterator insert ( const_iterator hint, value_type && value ) ;
(4) (C++11以降)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(5) (C++11以降)
void insert ( std:: initializer_list < value_type > ilist ) ;
(6) (C++11以降)
iterator insert ( node_type && nh ) ;
(7) (C++17以降)
iterator insert ( const_iterator hint, node_type && nh ) ;
(8) (C++17以降)

要素をコンテナに挿入します。

1,2) value を挿入します。
3,4) value を挿入します。 hint を検索開始位置の非拘束的な提案として使用します。
5) 範囲から要素を挿入 [ first , last ) .
6) 初期化子リストから要素を挿入 ilist
7) nh が空の node handle の場合、何も行わない。それ以外の場合、 nh が所有する要素をコンテナに挿入し、挿入された要素を指すイテレータを返す。 nh が空でなく、かつ get_allocator ( ) ! = nh. get_allocator ( ) の場合、動作は未定義である。
8) 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-4) 挿入された要素へのイテレータ。
5,6) (なし)
7,8) ノードハンドル nh が空の場合、終端イテレータ。それ以外の場合、挿入された要素を指すイテレータ。

例外

1-4) いずれかの操作によって例外がスローされた場合、挿入は無効となります。

計算量

1-4) 平均ケース: O(1) 、最悪ケース O(size())
5,6) 平均ケース: O(N) (Nは挿入する要素の数)。最悪ケース: O(N * size() + N)
7,8) 平均ケース: O(1) 、最悪ケース O(size())

関連項目

要素をその場で構築する
(公開メンバ関数)
ヒントを使用して要素をその場で構築する
(公開メンバ関数)
引数から推論された型の std::insert_iterator を作成する
(関数テンプレート)