std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: insert
From cppreference.net
<
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)
在尽可能接近
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
)
中的元素,按顺序执行以下操作:
-
向
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
(函数模板) |