命名空间
变体
操作

std::flat_multiset<Key,Compare,KeyContainer>::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 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 起)

将元素(s)插入容器。其余等效元素的顺序保持不变。

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) 从范围 [firstlast) 插入元素,就好像依次执行以下操作一样
  1. 将元素添加到 c,就好像通过 c.insert(c.end(), first, last); 一样。
  2. 根据 compare 对新插入元素的范围进行排序。
  3. 将排序后的范围与已存在元素的排序范围合并成一个排序后的范围。
在就地合并阶段可能会分配内存。
6) 从范围 [firstlast) 插入元素。等效于 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(),而 Mstd::distance(first, last)
6) 线性。
7) N + M·log(M),其中 N 是操作前 size() 的大小,而 Milist.size()
8) 线性。

[编辑] 示例

[编辑] 另请参阅

原地构造元素
(公共成员函数) [编辑]
使用提示原地构造元素
(公共成员函数) [编辑]
根据参数创建 std::insert_iterator 类型
(函数模板) [编辑]