public member function
<unordered_map>

std::unordered_multimap::emplace_hint

template <class... Args>iterator emplace_hint ( const_iterator position, Args&&... args );
带提示构建并插入元素
unordered_multimap 容器中插入新元素。新元素使用 args 作为元素构造函数的参数,原地构造。position指向容器中的一个位置,该位置被建议作为搜索插入点的提示(容器可能使用也可能不使用此建议来优化插入操作)。

这实际上会使容器的 size 增加一。

有一个类似的成员函数 insert,它会复制或移动一个已有的对象到容器中,并且也可以接受一个位置提示。

参数

position
作为插入操作的插入位置提示。该值可能被容器用来优化操作。
成员类型const_iterator是一个 forward iterator 类型。
args
用于构造插入元素的 *映射类型* 的新对象的参数。
转发给构造新元素(类型为 pair<const key_type, mapped_type>)的参数。
可以是以下之一:
- 两个参数:一个用于 *键*,另一个用于 *映射值*。
- 一个类型为 pair 的参数,其第一个成员是 *键* 的值,第二个成员是 *映射值* 的值。
- 第一个参数为 piecewise_construct,以及另外两个参数,它们是用于分别转发给 *键值* 和 *映射值* 的构造函数的 tuple
有关更多信息,请参阅 pair::pair

返回值

指向新插入元素的迭代器。

成员类型iteratorForward Iterator

新元素的存储使用allocator_traits<allocator_type>::construct()分配,这在失败时可能会抛出异常(对于默认的 allocatorbad_alloc如果分配请求不成功,则抛出)。

示例

尚无示例。请参阅 unordered_multimap::emplace 的示例。

复杂度

平均情况:常量。
最坏情况:容器大小的线性。
可能会触发 rehash(未包含)。

迭代器有效性

在大多数情况下,插入后容器中的所有迭代器都保持有效。唯一的例外是当容器的增长强制重新哈希时。在这种情况下,容器中的所有迭代器都将失效。

如果插入操作后容器的新 size 超出了其容量阈值(计算方式为容器的 bucket_count 乘以其 max_load_factor),则会强制进行 rehash。

在所有情况下,即使在 rehash 之后,引用仍然保持有效。

另见