std::unordered_map 搜索算法是如何实现的?
How a std::unordered_map search algorithm is implemented?
我理解如果需要在有序集合中实现查找,那么我们比较二叉树的每个“单元格”的数据,也就是使用“<”运算符的有序集合的结构适当的类型,但我不明白在 std::unordered_map.
的情况下一切是如何工作的 我在哪里可以找到任何关于如何安排一切的文章和/或直接查看代码?
Internally, the elements are not sorted in any particular order, but
organized into buckets. Which bucket an element is placed into depends
entirely on the hash of its key.
您可以使用如下代码在 std::unordered_map
中搜索密钥:(此处 key
变量等于您正在搜索的密钥):
if (your_map.find(key) != your_map.end()) {
...
}
如果你想搜索一个值,你可以像这样使用 for
循环:
for (const auto& pair : your_map) {
if (pair.second == the_value_you_are_finding) {
...
break;
}
}
但是如果你想知道你的程序如何搜索无序映射或者上面使用的函数是如何实现的,那么你必须查看你的 C++ 标准库的源代码,因为它取决于你的库。
我理解如果需要在有序集合中实现查找,那么我们比较二叉树的每个“单元格”的数据,也就是使用“<”运算符的有序集合的结构适当的类型,但我不明白在 std::unordered_map.
的情况下一切是如何工作的 我在哪里可以找到任何关于如何安排一切的文章和/或直接查看代码?
Internally, the elements are not sorted in any particular order, but organized into buckets. Which bucket an element is placed into depends entirely on the hash of its key.
您可以使用如下代码在 std::unordered_map
中搜索密钥:(此处 key
变量等于您正在搜索的密钥):
if (your_map.find(key) != your_map.end()) {
...
}
如果你想搜索一个值,你可以像这样使用 for
循环:
for (const auto& pair : your_map) {
if (pair.second == the_value_you_are_finding) {
...
break;
}
}
但是如果你想知道你的程序如何搜索无序映射或者上面使用的函数是如何实现的,那么你必须查看你的 C++ 标准库的源代码,因为它取决于你的库。