std::map
有一个insert
方法,它需要一个“提示”迭代器,如果这个提示正确的话,插入时间将从log(n)降低到常数时间。显然这是如何工作的,因为容器可以确保新添加的项具有小于提示的键,并且具有大于提示前一项的键。否则,提示是错误的并进行常规插入。
std::unordered_map
也有类似的带提示的insert
函数。什么是提示所起的作用呢?我不明白如何使用“提示”迭代器来加速哈希表的插入。
如果使用它,应该选择什么样的"提示"。在std::map
中,通常通过对映射调用lower_bound
来找到提示。
std::map
进行接口兼容,因为如果要执行任何有用的操作,您必须确切地知道要插入值的哈希位置 - 这意味着您需要考虑负载、桶等因素,基本上重新实现了unordered_map
内部的功能。另外,正如您所指出的,插入已经是摊销 O(1)。 - Xeo