问题标签 [stdhash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
208 浏览

c++ - std:hash 可以访问类的私有成员

我想散列一个有两个私有成员的类,例如:

foo.h

foo.cpp

在 C++ 中,Foo当最终哈希函数无法访问 foo 的私有成员时,通常如何进行哈希处理。

随意在您的答案中加入 boost 或 abseil。

0 投票
1 回答
59 浏览

c++ - 多个 std::hash 特化

我有一堂课

以及一些继承自 的类Base覆盖GetHash().

我想将这些类用作unordered_mapor中的键unordered_set。目前我通过使用实现它

作为模板中的一个Hash类(如)。unordered_mapunordered_map<MyDerived, int, Hashkey>

根据这个问题,我可以明确地专门std::hash<T>针对我自己的课程并且完全可以正常工作,但是我是否有兴趣将它专门用于多个课程?

我正在使用 C++17

0 投票
1 回答
53 浏览

c++ - 如果x * c1 = c2,如何找到乘数x,但x * c1会导致溢出

我正在编写一个代码,它将找到冲突std::hash<std::string>并尝试反转一些哈希计算步骤。

在实现中有这样的乘法std::hash

我知道hash2- 从上一步开始,我也知道mul- 它是常数值 = 0xc6a4a7935bd1e995UL

shift_mix(hash1) * mul导致溢出(hash2 / mul = 0),所以它只需要最后 64 位的乘法结果。

所以,我需要一种方法来找到shift_mix(hash1)满足相等性的许多变体。最好的方法是什么?可能以某种方式使用__int128_t

0 投票
1 回答
74 浏览

c++ - 如何将引用类型传递给 std::hash

我正在 C++-11 中创建一个模板缓存库,我想在其中对键进行哈希处理。我想将默认值std::hash用于原始/预定义类型,如用户定义类型int, std::string, etc.的用户定义哈希函数。我的代码目前如下所示:

我的主要功能如下所示:

在编译上面的代码时,我收到以下错误:

谁能在这里帮助我并指出我遗漏了什么或做错了什么?