std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>::insert
来自cppreference.com
< cpp | container | flat multimap
| 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) 如同以 emplace(std::forward<P>(x)); 将
x 插入 *this。此重载只有在 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) 中的元素:
- 如同以如下代码向
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));
} - 将新插入元素的范围按
value_comp排序。 - 合并所得的有序范围和既存元素的有序范围为一个有序范围。
原位合并操作中可能会分配内存。
8) 如同依次实施下列操作来插入范围
[first, last) 中的元素:
- 如同以如下代码向
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));
} - 合并新添加元素的有序范围和既存元素的有序范围为一个有序范围。
原位合并操作中可能会分配内存。
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) 无异常安全保证。(?)
| 本节未完成 原因:再查一下情况 7-10 |
复杂度
1-6) 与
size() 成线性。8) 与
size() 成线性。示例
| 本节未完成 原因:暂无示例 |
参阅
| 原位构造元素 (公开成员函数) | |
| 使用提示原位构造元素 (公开成员函数) | |
| 创建拥有从实参推出的类型的 std::insert_iterator (函数模板) |