所述boost::hash_combine模板函数采用一个散列(称为参考seed)和对象v.根据文档,它结合seed了vby 的哈希
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Run Code Online (Sandbox Code Playgroud)
我可以看出这是确定性的.我明白为什么要使用XOR.
我敢打赌,这个加法有助于将相似的值广泛分开,因此探测哈希表不会崩溃,但有人可以解释这个神奇常数是什么吗?
我想对xy网格中的坐标对元素进行集合运算.例如{(0,0),(1,4),(1,5),(2,3)}与{(2,3),(1,4),(2,6)} = {( 0,0),(1,4),(1,5),(2,3),(2,6)}遗憾的是我无法找到一种将元组插入Swift的Set命令的方法,因为它说它们是不符合'hashable'协议.我相信我有一个解决方法,但它涉及很多代码.在我碰到磨刀石之前,有没有一种简单的方法让我失踪?
我是iOS框架的新手,所以我目前正在尝试在Swift中做所有事情.这可能是我的问题......
我想用一个非常简单的元组作为关键:
(Int, Int)
Run Code Online (Sandbox Code Playgroud)
字典键需要是Hashable.我学到了
但是找不到我如何使这个简单的元组Hashable,并且最好在协议一致性方面做斗争.
更深刻的是,CGPoint可以解决我的问题.它可以是这种格式,但不可清除.
是否可以扩展CGPoint以便它可以清洗?如果是这样,怎么样?
编辑:CGPoint选择的Int变体的图像.