std :: unordered_set中的KeyEqual是做什么用的?

Spajak

什么是第三个参数的目的KeyEqualstd::unordered_set哈希唯一性还不够吗?

template<
    class Key,
    class Hash = std::hash<Key>,
    class KeyEqual = std::equal_to<Key>,
    class Allocator = std::allocator<Key>
> class unordered_set;

抱歉,这个问题听起来很幼稚。从Python / PHP转向C ++ :)

就目前而言,我的实现KeyEqual总是重复Hash隐含的。所以我想知道我是否正确地做到了。

萨马拉斯

但是,如果发生哈希冲突怎么办?

在此处输入图片说明

该图演示了两个不同的元素碰巧具有相等的哈希值的情况。结果,当涉及哈希时,哈希值可能不是唯一的。


引用的参考文献std::unordered_set

在内部,unordered_set中的元素未按任何特定顺序排序,而是根据它们的哈希值组织为存储桶,以允许直接通过它们的值快速访问各个元素(平均具有恒定的平均时间复杂度)。

因此,一个桶可以包含多个元素!这两个元素将具有相同的哈希值,这不能保证是唯一的!


唯一可以保证唯一的就是钥匙

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

来自分类Dev

了解`std :: unordered_set`的用法

来自分类Dev

std :: unordered_set插入获取对象

来自分类Dev

何时使用std :: unordered_set代替std :: set?

来自分类Dev

何时使用std :: unordered_set代替std :: set?

来自分类Dev

使用std :: unique_ptr的std :: unordered_set

来自分类Dev

为什么 std::unordered_set operator==() 的复杂度是 N^2?

来自分类Dev

函数结束时是否会删除std :: unordered_set中的数据?

来自分类Dev

是否可以通过存储桶迭代器从std :: unordered_set中删除元素?

来自分类Dev

具有自定义谓词的std :: unordered_set中的未定义行为

来自分类Dev

std :: unordered_set是否允许插入重复的元素?

来自分类Dev

如何在C ++中使用std :: unordered_set?

来自分类Dev

GCC 4.9的unordered_set和std :: move

来自分类Dev

std :: unordered_set ::擦除复杂度

来自分类Dev

指向std :: unordered_set中元素的指针/引用

来自分类Dev

您如何static_cast std :: unordered_set?

来自分类Dev

std :: unordered_set通过引用与值的返回类型

来自分类Dev

为什么用“ std :: vector <std :: string>&”代替“ void”?

来自分类Dev

为什么用“ std :: vector <std :: string>&”代替“ void”?

来自分类Dev

我应该对一组指针使用std :: set还是std :: unordered_set吗?

来自分类Dev

扩展std :: unordered_set <>以与std :: stack <>一起使用

来自分类Dev

从std :: unordered_set <char>有效构造std :: string

来自分类Dev

在std :: unordered_set <std :: unique_ptr>(C ++ 20)中找到指针T *

来自分类Dev

std :: unordered_set :: find和std :: find之间奇怪的性能差异

来自分类Dev

g ++ 5中std :: unordered_set的类型不完整的编译错误,在clang ++中编译

来自分类Dev

std :: unordered_map-使用Lambda专门化KeyEqual

来自分类Dev

基于std :: unordered_(set | map)范围擦除的实际用例是什么?

来自分类Dev

std :: equal重载做什么?

来自分类Dev

clear()是否会影响std :: unordered_set的存储区计数?

Related 相关文章

  1. 1

    为什么`std :: prev`不会在`std :: unordered_set`的迭代器中引发错误?

  2. 2

    了解`std :: unordered_set`的用法

  3. 3

    std :: unordered_set插入获取对象

  4. 4

    何时使用std :: unordered_set代替std :: set?

  5. 5

    何时使用std :: unordered_set代替std :: set?

  6. 6

    使用std :: unique_ptr的std :: unordered_set

  7. 7

    为什么 std::unordered_set operator==() 的复杂度是 N^2?

  8. 8

    函数结束时是否会删除std :: unordered_set中的数据?

  9. 9

    是否可以通过存储桶迭代器从std :: unordered_set中删除元素?

  10. 10

    具有自定义谓词的std :: unordered_set中的未定义行为

  11. 11

    std :: unordered_set是否允许插入重复的元素?

  12. 12

    如何在C ++中使用std :: unordered_set?

  13. 13

    GCC 4.9的unordered_set和std :: move

  14. 14

    std :: unordered_set ::擦除复杂度

  15. 15

    指向std :: unordered_set中元素的指针/引用

  16. 16

    您如何static_cast std :: unordered_set?

  17. 17

    std :: unordered_set通过引用与值的返回类型

  18. 18

    为什么用“ std :: vector <std :: string>&”代替“ void”?

  19. 19

    为什么用“ std :: vector <std :: string>&”代替“ void”?

  20. 20

    我应该对一组指针使用std :: set还是std :: unordered_set吗?

  21. 21

    扩展std :: unordered_set <>以与std :: stack <>一起使用

  22. 22

    从std :: unordered_set <char>有效构造std :: string

  23. 23

    在std :: unordered_set <std :: unique_ptr>(C ++ 20)中找到指针T *

  24. 24

    std :: unordered_set :: find和std :: find之间奇怪的性能差异

  25. 25

    g ++ 5中std :: unordered_set的类型不完整的编译错误,在clang ++中编译

  26. 26

    std :: unordered_map-使用Lambda专门化KeyEqual

  27. 27

    基于std :: unordered_(set | map)范围擦除的实际用例是什么?

  28. 28

    std :: equal重载做什么?

  29. 29

    clear()是否会影响std :: unordered_set的存储区计数?

热门标签

归档