问题标签 [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.
c++ - std:hash 可以访问类的私有成员
我想散列一个有两个私有成员的类,例如:
foo.h
foo.cpp
在 C++ 中,Foo
当最终哈希函数无法访问 foo 的私有成员时,通常如何进行哈希处理。
随意在您的答案中加入 boost 或 abseil。
c++ - 多个 std::hash 特化
我有一堂课
以及一些继承自 的类Base
覆盖GetHash()
.
我想将这些类用作unordered_map
or中的键unordered_set
。目前我通过使用实现它
作为模板中的一个Hash
类(如)。unordered_map
unordered_map<MyDerived, int, Hashkey>
根据这个问题,我可以明确地专门std::hash<T>
针对我自己的课程并且完全可以正常工作,但是我是否有兴趣将它专门用于多个课程?
我正在使用 C++17
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
?
c++ - 如何将引用类型传递给 std::hash
我正在 C++-11 中创建一个模板缓存库,我想在其中对键进行哈希处理。我想将默认值std::hash
用于原始/预定义类型,如用户定义类型int, std::string, etc.
的用户定义哈希函数。我的代码目前如下所示:
我的主要功能如下所示:
在编译上面的代码时,我收到以下错误:
谁能在这里帮助我并指出我遗漏了什么或做错了什么?