public member function
<unordered_set>

std::unordered_multiset::emplace_hint

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

这有效地使容器的 size 增加了 1。

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

参数

position
作为插入操作的插入位置提示。该值可能被容器用来优化操作。
成员类型const_iterator是一个 forward iterator 类型。
args
传递给要插入的新元素的构造函数的参数。

返回值

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

成员类型iterator是一个 forward iterator 类型。

unordered_multiset 中的所有迭代器都对元素具有 const 访问权限:可以插入或移除元素,但在容器中不能修改它们。

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

示例

还没有示例。请参阅 unordered_multiset::emplace 的示例。

复杂度

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

迭代器有效性

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

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

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

另见