Namespaces
Variants

std::multiset<Key,Compare,Allocator>:: insert

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

要素をコンテナに挿入します。残りの同等な要素の順序は保持されます。

1,2) value を挿入します。同等のキーを持つ要素がコンテナに存在する場合、その範囲の上限位置に挿入します。
3,4) value を、 pos の直前の位置にできるだけ近い位置に挿入します。
5) 範囲から要素を挿入 [ first , last )
6) 初期化子リストから要素を挿入 ilist
7) nh が空の node handle である場合、何も行わない。それ以外の場合、 nh が所有する要素をコンテナに挿入し、挿入された要素を指すイテレータを返す。コンテナ内に nh. key ( ) と等価なキーを持つ要素の範囲が存在する場合、その範囲の末尾に要素が挿入される。 nh が空でなく、かつ get_allocator ( ) ! = nh. get_allocator ( ) の場合、動作は未定義である。
8) nh が空の node handle である場合、何もせずに終端イテレータを返す。それ以外の場合、 nh が所有する要素をコンテナに挿入し、 nh. key ( ) と等価なキーを持つ要素を指すイテレータを返す。要素は pos の直前にできるだけ近い位置に挿入される。 nh が空でなく、かつ get_allocator ( ) ! = nh. get_allocator ( ) の場合、動作は未定義である。

イテレータおよび参照は無効化されません。 挿入が成功した場合、ノードハンドル内に保持されている間に取得された要素へのポインタと参照は無効化され、抽出前にその要素に対して取得されたポインタと参照は有効になります。 (C++17以降)

目次

パラメータ

pos - 新しい要素が挿入される位置の前を指すイテレータ
value - 挿入する要素の値
first, last - 挿入する要素のソース範囲を定義するイテレータのペア range
ilist - 値を挿入する初期化子リスト
nh - 互換性のある node handle
型要件
-
InputIt LegacyInputIterator の要件を満たさなければならない。

戻り値

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

例外

1-4,7,8) 例外が任意の操作によってスローされた場合、挿入は無効となります。
5,6) 例外安全性保証なし。

計算量

1,2,7) O(log(size()))
3,4,8) 償却定数時間(挿入が pos の直前に発生する場合)、 O(log(size())) それ以外の場合。
5,6) O(N·log(size() + N)) 、ここで N は挿入する要素の数です。

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 233 C++98 pos は単なるヒントであり、完全に無視される可能性があった 挿入は pos の直前の位置に
できるだけ近くなるように
行われることが要求される
LWG 264 C++98 オーバーロード (5) の計算量は、範囲 [first, last)
Compare に従ってソートされている場合に線形であることが要求されていた
この特別な場合における線形の
要件を削除
LWG 371 C++98 等価な要素の順序が維持されることが保証されていなかった 維持されることが要求される

関連項目

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