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 起)

向容器插入元素。保持剩余等价元素的顺序。

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) 如同依次实施下列操作来插入范围 [firstlast) 中的元素:
  1. 如同用 c.insert(c.end(), first, last); 插入元素到 c
  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
(函数模板)