名前空間
変種
操作

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>::insert

From cppreference.com
 
 
 
 
iterator insert( const value_type& value );
(1) (C++23から)
iterator insert( value_type&& value );
(2) (C++23から)
iterator insert( const_iterator pos, const value_type& value );
(3) (C++23から)
iterator insert( const_iterator pos, value_type&& value );
(4) (C++23から)
template< class P >
iterator insert( P&& x );
(5) (C++23から)
template< class P >
iterator insert( const_iterator pos, P&& x );
(6) (C++23から)
template< class InputIt >
void insert( InputIt first, InputIt last );
(7) (C++23から)
template< class InputIt >
void insert( std::sorted_equivalent_t, InputIt first, InputIt last );
(8) (C++23から)
void insert( std::initializer_list<key_type> ilist );
(9) (C++23から)
void insert( std::sorted_equivalent_t s, std::initializer_list<key_type> ilist );
(10) (C++23から)

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

1) value を挿入します。return emplace(value); と同等です。
2) value を挿入します。return emplace(std::move(value)); と同等です。
3) pos の直前の位置に最も近い位置に value を挿入します。return emplace_hint(pos, value); と同等です。
4) pos の直前の位置に最も近い位置に value を挿入します。return emplace_hint(pos, std::move(value)); と同等です。
5) emplace(std::forward<P>(x)); によるかのように、*thisx を挿入します。このオーバーロードは、std::is_constructible_v<pair<key_type, mapped_type>, P>true の場合にのみ、オーバーロード解決に参加します。
6) pos の直前の位置に最も近い位置に、*thisx を挿入します。return emplace_hint(position, std::forward<P>(x)); と同等です。このオーバーロードは、std::is_constructible_v<pair<key_type, mapped_type>, P>true の場合にのみ、オーバーロード解決に参加します。
7) 範囲 [firstlast) の要素を、以下の操作を逐次実行するかのように挿入します。
  1. 要素を c に、以下のように追加します。
    for (; first != last; ++first)
    {
        value_type value = *first;
        c.keys.insert(c.keys.end(), std::move(value.first));
        c.values.insert(c.values.end(), std::move(value.second));
    }
  2. 新しく挿入された要素の範囲を、value_comp に関してソートします。
  3. 結果のソート済み範囲と、既存の要素のソート済み範囲をマージして、単一のソート済み範囲にします。
インプレースマージ操作中にメモリが割り当てられる場合があります。
8) 範囲 [firstlast) の要素を、以下の操作を逐次実行するかのように挿入します。
  1. 要素を c に、以下のように追加します。
    for (; first != last; ++first)
    {
        value_type value = *first;
        c.keys.insert(c.keys.end(), std::move(value.first));
        c.values.insert(c.values.end(), std::move(value.second));
    }
  2. 新しく追加された要素のソート済み範囲と、既存の要素のソート済み範囲をマージして、単一のソート済み範囲にします。
インプレースマージ操作中にメモリが割り当てられる場合があります。
9) 初期化子リスト ilist の要素を挿入します。insert(ilist.begin(), ilist.end()); と同等です。
10) 初期化子リスト ilist の要素を挿入します。insert(s, ilist.begin(), ilist.end()); と同等です。

目次

[編集] パラメータ

pos - 新しい要素が挿入される位置の前のイテレータ
value - 挿入する要素の値
first, last - 挿入する要素のソース 範囲 を定義するイテレータのペア
ilist - 値を挿入するための初期化子リスト
x - キーと透過的に比較できる任意の型の値
s - 入力シーケンスがソート済みであることを示す、あいまいさ解消タグ(value_comp() と比較して)
型要件
-
InputItLegacyInputIterator の要件を満たす必要があります。

[編集] 戻り値

1-6) 挿入された要素へのイテレータ。
7-10) (なし)

[編集] 例外

1-6) いずれかの操作で例外がスローされた場合、挿入は効果がありません。
7-10) 例外安全保証はありません。(?)

[編集] 計算量

1-6) size() に対して線形。
7) N + M·log(M)、ここで N は操作前の size() であり、Mstd::distance(first, last) です。
8) size() に対して線形。
9) N + M·log(M)、ここで N は操作前の size() であり、Milist.size() です。
10) N に対して線形、ここで N は操作後の size() です。

[編集]

[編集] 関連項目

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