Namespaces
Variants

std::unordered_multiset<Key,Hash,KeyEqual,Allocator>:: insert

From cppreference.net
iterator insert ( const value_type & value ) ;
(1) (C++11 起)
iterator insert ( value_type && value ) ;
(2) (C++11 起)
iterator insert ( const_iterator hint, const value_type & value ) ;
(3) (C++11 起)
iterator insert ( const_iterator hint, value_type && value ) ;
(4) (C++11 起)
template < class InputIt >
void insert ( InputIt first, InputIt last ) ;
(5) (C++11 起)
void insert ( std:: initializer_list < value_type > ilist ) ;
(6) (C++11 起)
iterator insert ( node_type && nh ) ;
(7) (C++17 起)
iterator insert ( const_iterator hint, node_type && nh ) ;
(8) (C++17 起)

向容器中插入元素。

1,2) 插入 value
3,4) 插入 value ,使用 hint 作为搜索起始位置的非强制性建议。
5) 插入来自范围 [ first , last ) 的元素。
6) 从初始化列表 ilist 插入元素。
7) nh 为空 节点句柄 ,则不执行任何操作。否则,将 nh 所拥有的元素插入容器,并返回指向被插入元素的迭代器。若 nh 非空且 get_allocator ( ) ! = nh. get_allocator ( ) ,则行为未定义。
8) nh 为空 节点句柄 ,则不执行任何操作并返回结束迭代器。否则,将 nh 所拥有的元素插入容器,并返回指向键等价于 nh. key ( ) 的元素的迭代器。 hint 用作搜索起始位置的非强制性建议。若 nh 非空且 get_allocator ( ) ! = nh. get_allocator ( ) ,则行为未定义。

如果在操作后新元素数量大于旧的 max_load_factor() * bucket_count() 将发生重哈希。
若发生重哈希(因插入导致),所有迭代器均失效。否则(未发生重哈希),迭代器保持有效。 若插入成功,当元素保存在节点句柄中时获取的指向该元素的指针和引用将失效,而在该元素被提取前获取的指针和引用将变为有效。 (since C++17)

目录

参数

hint - 迭代器,作为插入内容的建议位置
value - 要插入的元素值
first, last - 定义要插入元素来源 范围 的迭代器对
ilist - 要从中插入值的初始化列表
nh - 兼容的 节点句柄
类型要求
-
InputIt 必须满足 LegacyInputIterator 的要求。

返回值

1-4) 指向被插入元素的迭代器。
5,6) (无)
7,8) nh 为空则返回结束迭代器,否则返回指向被插入元素的迭代器。

异常

1-4) 若任何操作抛出异常,则插入操作无效。

复杂度

1-4) 平均情况: O(1) ,最坏情况 O(size())
5,6) 平均情况: O(N) ,其中 N 为待插入元素数量。最坏情况: O(N * size() + N)
7,8) 平均情况: O(1) ,最坏情况 O(size())

示例

另请参阅

td> 使用提示原位构造元素
(公开成员函数)
原位构造元素
(公开成员函数)
创建从参数推断类型的 std::insert_iterator
(函数模板)