std::map
有一个insert
方法,它带有一个“提示”迭代器,如果提示正确,它将把log(n)的插入时间减少到常量时间。很明显这是如何工作的,因为容器可以确保新添加的项具有小于提示的键并且具有比提示之前的项更大的键。否则提示错误,并执行正常插入。
std::unordered_map
也有类似insert
的提示函数。提示有什么作用?我不清楚如何使用另一个“提示”迭代器来加速哈希映射的插入。
如果使用它,什么是适当的“提示”。在std::map
中,通常可以通过在地图上调用lower_bound
来找到提示。
答案 0 :(得分:16)
这是一个接口兼容性问题。基本上,设计是在考虑std::map
的界面的情况下完成的。
换句话说,对于std::unordered_map
,它没有提供不同的提示。
此处评论的其他信息:
接口兼容性非常重要,因为能够快速/轻松地在map
和unordered_map
之间切换,可以提供无痛过渡的宝贵灵活性,因为性能往往是选择其中一个的决定性因素。
答案 1 :(得分:0)
该提示允许无序映射实现首先进行值比较,以查看提示是否有效。这样可以避免执行散列函数,而散列函数比比较操作要昂贵得多。