std::multiset<Key,Compare,Allocator>:: insert
From cppreference.net
|
iterator insert
(
const
value_type
&
value
)
;
|
(1) | |
|
iterator insert
(
value_type
&&
value
)
;
|
(2) | (C++11 起) |
| (3) | ||
|
iterator insert
(
iterator pos,
const
value_type
&
value
)
;
|
(C++11 前) | |
|
iterator insert
(
const_iterator pos,
const
value_type
&
value
)
;
|
(C++11 起) | |
|
iterator insert
(
const_iterator pos, value_type
&&
value
)
;
|
(4) | (C++11 起) |
|
template
<
class
InputIt
>
void insert ( InputIt first, InputIt last ) ; |
(5) | |
|
void
insert
(
std::
initializer_list
<
value_type
>
ilist
)
;
|
(6) | (C++11 起) |
|
iterator insert
(
node_type
&&
nh
)
;
|
(7) | (C++17 起) |
|
iterator insert
(
const_iterator pos, node_type
&&
nh
)
;
|
(8) | (C++17 起) |
将元素插入容器中。剩余等价元素的顺序保持不变。
1,2)
插入
value
。若容器已存在等价键的元素,则在该范围的 upper bound 处插入。
3,4)
将
value
插入到尽可能接近
pos
之前位置的位置。
5)
插入来自范围
[
first
,
last
)
的元素。
6)
从初始化列表
ilist
插入元素。
7)
若
nh
为空
节点句柄
,则不执行任何操作。否则,将
nh
所拥有的元素插入容器,并返回指向被插入元素的迭代器。若容器中已存在与
nh.
key
(
)
等效的键值范围,则该元素将被插入到该范围的末尾。若
nh
非空且
get_allocator
(
)
!
=
nh.
get_allocator
(
)
,则行为未定义。
8)
若
nh
是空的
节点句柄
,则不执行任何操作并返回结束迭代器。否则,将
nh
所拥有的元素插入容器,并返回指向键等价于
nh.
key
(
)
的元素的迭代器。该元素会尽可能插入到紧邻
pos
之前的位置。若
nh
非空且
get_allocator
(
)
!
=
nh.
get_allocator
(
)
,则行为未定义。
不会使任何迭代器或引用失效。 若插入成功,则通过节点句柄持有该元素期间获得的指针和引用将失效,而在该元素被提取之前获得的指针和引用将变为有效。 (since C++17)
目录 |
参数
| pos | - | 指向新元素将插入位置之前的迭代器 |
| value | - | 要插入的元素值 |
| first, last | - | 定义要插入元素来源 范围 的迭代器对 |
| ilist | - | 要从中插入值的初始化列表 |
| nh | - | 兼容的 节点句柄 |
| 类型要求 | ||
-
InputIt
必须满足
LegacyInputIterator
的要求。
|
||
返回值
1-4)
指向被插入元素的迭代器。
5,6)
(无)
7,8)
若
nh
为空则返回结束迭代器,否则返回指向被插入元素的迭代器。
异常
1-4,7,8)
如果任何操作抛出异常,则插入操作无效。
5,6)
不提供异常安全保证。
复杂度
1,2,7)
O(log(size()))
3,4,8)
若插入发生在
pos
之前的位置,则摊还常数时间复杂度,否则为
O(log(size()))
。
5,6)
O(N·log(size() + N))
,其中
N
是要插入的元素数量。
示例
|
本节内容不完整
原因:缺少示例 |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用版本 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 233 | C++98 | pos 仅作为提示,可能被完全忽略 |
要求插入位置必须尽可能
接近 pos 之前的位置 |
| LWG 264 | C++98 |
若范围
[first, last)
按
Compare
排序,
要求重载 (5) 的时间复杂度为线性 |
在此特殊情况下
移除了线性复杂度要求 |
| LWG 371 | C++98 | 未保证等价元素的顺序得以保留 | 要求必须保留等价元素顺序 |
另请参阅
|
(C++11)
|
原地构造元素
(公开成员函数) |
|
(C++11)
|
使用提示原地构造元素
(公开成员函数) |
|
创建从参数推断类型的
std::insert_iterator
(函数模板) |