名前空間
変種
操作

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

From cppreference.com
 
 
 
 
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) 範囲 [firstlast) から要素を挿入します。
6) 初期化リスト ilist から要素を挿入します。
7) nh が空のノードハンドルの場合、何も行いません。それ以外の場合、nh が所有する要素をコンテナに挿入し、挿入された要素を指すイテレータを返します。nh が空でなく、かつ get_allocator() != nh.get_allocator() の場合、動作は未定義です。
8) nh が空のノードハンドルの場合、何も行わず、末尾のイテレータを返します。それ以外の場合、nh が所有する要素をコンテナに挿入し、nh.key() と同等のキーを持つ要素を指すイテレータを返します。hint は、検索を開始する場所のヒントとして使用されます(必須ではありません)。nh が空でなく、かつ get_allocator() != nh.get_allocator() の場合、動作は未定義です。

操作後、要素の新しい数が、古い max_load_factor() * bucket_count() よりも大きい場合、再ハッシュが発生します。
挿入による再ハッシュが発生した場合、すべてのイテレータは無効になります。それ以外の場合(再ハッシュが発生しない場合)、イテレータは無効になりません。挿入が成功した場合、ノードハンドル内で保持されている間、その要素へのポインタと参照は無効になります。また、要素がノードハンドルから抽出される前に取得したその要素へのポインタと参照は有効になります。(C++17 以降)

目次

[編集] パラメータ

hint - 挿入するコンテンツのヒントとして使用されるイテレータ
value - 挿入する要素の値
first, last - 挿入する要素のソース 範囲 を定義するイテレータのペア
ilist - 挿入する値の初期化子リスト
nh - 互換性のある node handle
型要件
-
InputItLegacyInputIterator の要件を満たす必要があります。

[編集] 戻り値

1-4) 挿入された要素へのイテレータ。
5,6) (なし)
7,8) nh が空だった場合は末尾のイテレータ、それ以外の場合は挿入された要素を指すイテレータ。

[編集] 例外

1-4) どの操作で例外がスローされた場合でも、挿入は効果がありません。

[編集] 計算量

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

[編集]

[編集] 関連項目

要素を直接構築する
(公開メンバ関数) [編集]
ヒントを使用して要素を直接構築する
(公開メンバ関数) [編集]
引数から推論された型の std::insert_iterator を作成する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)