Std::unordered_map插入提示
std::unordered_map insert with hint
std::map
有一个insert
方法,它接受一个"hint"迭代器,如果提示正确,将把插入时间从log(n)减少到常数时间。这是很明显的工作方式,因为容器可以确保新添加的项具有一个小于提示的键,并且具有一个大于提示之前的项的键。否则提示错误,执行普通插入操作。
std::unordered_map
也具有与insert
相似的提示功能。如果有的话,这个暗示有什么作用?我不明白如何使用另一个"hint"迭代器来加速哈希映射的插入。
如果使用,什么是合适的"提示"?在std::map
中,通常通过在映射上调用lower_bound
来找到提示。
这是一个接口兼容性问题。基本上,设计是考虑std::map
的接口。
换句话说,对于std::unordered_map
来说,是否提供提示是没有区别的。
注释中的附加信息:
接口兼容性非常重要,因为能够快速/轻松地在map
和unordered_map
之间切换提供了无痛转换的宝贵灵活性,因为性能通常是选择其中一个而不是另一个的决定性因素。
提示允许无序映射实现首先进行值比较,以查看提示是否有效。这样就避免了执行哈希函数,而哈希函数可能比比较操作更昂贵。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 地图插入(const_iterator提示,值)用法
- 可以提示插入到标准::地图导致不平衡的树
- 将排序范围插入 std::set 并带有提示
- 在unordered_map/unordered_set中插入/放置新元素时的提示
- 有没有办法插入到带有多个提示的 boost::multi_index 中
- map/set :: 插入是否提供了正确的迭代器提示,它的复杂性是多少?
- 插入一个新元素unordered_set:提示应该是 end()
- QPushButton工具提示插入一个换行符而不需要我指定它
- Std::unordered_map插入提示