gpt4 book ai didi

c++ - 如何使用 std::hash 散列缓冲区?

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:43 24 4
gpt4 key购买 nike

我研究了 std::hash 的引用,发现它不能对序列化数据进行哈希处理,例如 char*。是正确的还是正常的?如何散列序列化缓冲区?

最佳答案

std::hash 的想法是为固定大小的数据提供一种通用的哈希算法,该算法足以满足大多数用途,因此用户无需每次都自己滚动。可变长度输入的问题是对它们进行散列是一个复杂得多的问题,通常取决于数据本身的特性,要求标准库包含这样的算法,因此实现被推给了开发人员。例如,适用于 ASCII 字符串的哈希算法可能不适用于主要包含零的数据,而适用于后者的良好算法可能会导致字符串冲突过多。 (也有速度权衡;一些散列算法可能适用于所有情况,但速度太慢。)

IIRC 是一种古老的 ASCII 字符串哈希算法,它简单地将每个字符的 ASCII 值相乘。不用说,这真的很快,而且只有在没有零的情况下才有效。

因此,除了使用 std::hash,您应该使用相同的 API 编写您自己的哈希类(即它必须定义 size_t operator()(Key)) 并将该类作为 Hash 模板参数传递给使用哈希的模板,例如 std::unordered_set

关于c++ - 如何使用 std::hash 散列缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com