Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
ヘッダーで定義 <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 ) から要素を挿入します。
[ first , last ) 有効な範囲 でない場合、または first および/または last * this 内のイテレータである場合、動作は未定義です。
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以降)

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Parameters、Return value、Exceptions、Complexity、Example、Defect reports、See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、IDは一切変更していません - 数値、リンク、構造は完全に保持されています

パラメータ

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 を作成する
(関数テンプレート)