Namespaces
Variants

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

From cppreference.net
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) 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) 插入范围 [ first , last ) 中的元素,按顺序执行以下操作:
  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) 插入范围 [ first , last ) 中的元素,按顺序执行以下操作:
  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() M 表示 std:: distance ( first, last )
8) size() 呈线性关系。
9) N + M·log ( M ) ,其中 N 表示操作前的 size() M 表示 ilist. size ( )
10) N 呈线性关系,其中 N 是操作后的 size()

示例

参见

原地构造元素
(公开成员函数)
使用提示原地构造元素
(公开成员函数)
创建从参数推断类型的 std::insert_iterator
(函数模板)