std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>::insert
From cppreference.com
< cpp | コンテナ | flat_multimap
| 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)); によるかのように、*this に
x を挿入します。このオーバーロードは、std::is_constructible_v<pair<key_type, mapped_type>, P> が true の場合にのみ、オーバーロード解決に参加します。6) pos の直前の位置に最も近い位置に、*this に
x を挿入します。return emplace_hint(position, std::forward<P>(x)); と同等です。このオーバーロードは、std::is_constructible_v<pair<key_type, mapped_type>, P> が true の場合にのみ、オーバーロード解決に参加します。7) 範囲
[first, last) の要素を、以下の操作を逐次実行するかのように挿入します。- 要素を
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));
} - 新しく挿入された要素の範囲を、
value_compに関してソートします。 - 結果のソート済み範囲と、既存の要素のソート済み範囲をマージして、単一のソート済み範囲にします。
インプレースマージ操作中にメモリが割り当てられる場合があります。
8) 範囲
[first, last) の要素を、以下の操作を逐次実行するかのように挿入します。- 要素を
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));
} - 新しく追加された要素のソート済み範囲と、既存の要素のソート済み範囲をマージして、単一のソート済み範囲にします。
インプレースマージ操作中にメモリが割り当てられる場合があります。
9) 初期化子リスト ilist の要素を挿入します。insert(ilist.begin(), ilist.end()); と同等です。
10) 初期化子リスト ilist の要素を挿入します。insert(s, ilist.begin(), ilist.end()); と同等です。
| イテレータ無効化に関する情報は、こちらからコピーされています。 |
目次 |
[編集] パラメータ
| pos | - | 新しい要素が挿入される位置の前のイテレータ |
| value | - | 挿入する要素の値 |
| first, last | - | 挿入する要素のソース 範囲 を定義するイテレータのペア |
| ilist | - | 値を挿入するための初期化子リスト |
| x | - | キーと透過的に比較できる任意の型の値 |
| s | - | 入力シーケンスがソート済みであることを示す、あいまいさ解消タグ(value_comp() と比較して) |
| 型要件 | ||
-InputIt は LegacyInputIterator の要件を満たす必要があります。 | ||
[編集] 戻り値
1-6) 挿入された要素へのイテレータ。
7-10) (なし)
[編集] 例外
1-6) いずれかの操作で例外がスローされた場合、挿入は効果がありません。
7-10) 例外安全保証はありません。(?)
| このセクションは未完成です 理由: ケース7-10を再確認してください。 |
[編集] 計算量
1-6)
size() に対して線形。8)
size() に対して線形。[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| 要素を直接構築する (公開メンバ関数) | |
| ヒントを使用して要素を直接構築する (公開メンバ関数) | |
| 引数から推論された型の std::insert_iterator を作成する (関数テンプレート) |