std::unordered_map如何区分同一bucket中的值
How does std::unordered_map differentiate between values in the same bucket?
我知道std::unordered_map
通过在bucket中链接具有相同哈希的密钥来处理密钥哈希冲突(我认为使用链表(。我的问题是,它如何知道同一个bucket中的哪个值对应于哪个键?
我的天真想法是,每个值都存储在std::pair
中,是这样做的吗?
是的,基本上就是这样做的。请记住,关键是数据的部分。使用映射可以做的一件事是遍历其键/值对。如果不存储密钥本身,即使使用完美的哈希,这也是不可能的。
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- Python中的for循环与C++有何不同
- 在C++中释放内存期间,迭代器与指针有何不同
- 类型为 "Bucket&"(未限定的 const 限定)的引用不能使用 "SortedList." 类型的值进行初始化 如何修复此错误?
- "constinit"和"constexpr"之间的真正区别是什么?
- ((int) a) 和 (int(a)) 之间的区别是什么?
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 如何完全删除窗口的非工作区?
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 类中的 C++ int 被设置为值,似乎不知从何而来
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- const auto & 和 auto & if reference 对象之间的区别是 const
- 是否unrdered_map的副本将具有完全相同的bucket
- 收益率和回报有何不同?
- 覆盖私有功能,它与受保护功能有何不同?
- 擦除删除成语的性能增益从何而来
- 如何区分数组索引的访问和赋值?
- 无论代码长度如何,以下代码的内存要求有何不同?
- 按引用传递和动态内存分配之间的区别是什么