Namespaces
Variants

std::flat_multiset<Key,Compare,KeyContainer>:: 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 InputIt >
void insert ( InputIt first, InputIt last ) ;
(5) (自 C++23 起)
template < class InputIt >
void insert ( std:: sorted_equivalent_t , InputIt first, InputIt last ) ;
(6) (自 C++23 起)
void insert ( std:: initializer_list < key_type > ilist ) ;
(7) (自 C++23 起)
void insert ( std:: sorted_equivalent_t s, std:: initializer_list < key_type > ilist ) ;
(8) (自 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) 插入范围 [ first , last ) 中的元素,按顺序执行以下操作:
  1. c 添加元素,操作方式类似于 c. insert ( c. end ( ) , first, last ) ;
  2. 根据 compare 对新插入的元素范围进行排序。
  3. 将新生成的已排序范围与原有元素的已排序范围合并为单一有序范围。
在就地合并阶段可能分配内存。
6) 插入来自范围 [ first , last ) 的元素。等价于 insert ( first, last ) ;
7) 从初始化列表 ilist 插入元素。等价于 insert ( ilist. begin ( ) , ilist. end ( ) ) ;
8) 从初始化列表 ilist 插入元素。等效于 insert ( s, ilist. begin ( ) , ilist. end ( ) ) ;

目录

参数

pos - 指向新元素将插入位置之前的迭代器
value - 要插入的元素值
first, last - 定义要插入元素源 范围 的迭代器对
ilist - 要从中插入值的初始化列表
s - 指示输入序列已排序(相对于 key_compare )的消歧义标签
类型要求
-
InputIt 必须满足 LegacyInputIterator 的要求。

返回值

1-4) 指向被插入元素的迭代器。
5-8) (无)

异常

1-4) 取决于底层容器。
5-8) 不提供异常安全保证。

复杂度

1-4) 线性。
5) N + M·log ( M ) ,其中 N 表示操作前的 size() M 表示 std:: distance ( first, last )
6) 线性。
7) N + M·log ( M ) ,其中 N 表示操作前的 size() M 表示 ilist. size ( )
8) 线性。

示例

参见

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