名稱空間
變體
操作

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

來自 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) 插入 value 到儘可能接近 pos 之前的某個位置。等價於 return emplace_hint(pos, value);
4) 插入 value 到儘可能接近 pos 之前的某個位置。等價於 return emplace_hint(pos, std::move(value));
5) 插入 x*this,如同透過 emplace(std::forward<P>(x));。此過載僅在 std::is_constructible_v<pair<key_type, mapped_type>, P>true 時參與過載決議。
6) 插入 x*this 到儘可能接近 pos 之前的某個位置。等價於 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()
型別要求
-
InputIt 必須滿足 LegacyInputIterator 的要求。

[編輯] 返回值

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
(函式模板) [編輯]