Std::unordered_map插入提示

std::unordered_map insert with hint

本文关键字:插入 提示 map unordered Std      更新时间:2023-10-16

std::map有一个insert方法,它接受一个"hint"迭代器,如果提示正确,将把插入时间从log(n)减少到常数时间。这是很明显的工作方式,因为容器可以确保新添加的项具有一个小于提示的键,并且具有一个大于提示之前的项的键。否则提示错误,执行普通插入操作。

std::unordered_map也具有与insert相似的提示功能。如果有的话,这个暗示有什么作用?我不明白如何使用另一个"hint"迭代器来加速哈希映射的插入。

如果使用,什么是合适的"提示"?在std::map中,通常通过在映射上调用lower_bound来找到提示。

这是一个接口兼容性问题。基本上,设计是考虑std::map的接口。

换句话说,对于std::unordered_map来说,是否提供提示是没有区别的。

注释中的附加信息:

接口兼容性非常重要,因为能够快速/轻松地在mapunordered_map之间切换提供了无痛转换的宝贵灵活性,因为性能通常是选择其中一个而不是另一个的决定性因素。

提示允许无序映射实现首先进行值比较,以查看提示是否有效。这样就避免了执行哈希函数,而哈希函数可能比比较操作更昂贵。