为列表集生成唯一的整数键

时间:2015-03-05 21:40:20

标签: arrays vector hash set

我有许多长度相同的整数向量。它们可以包含任何已签名的int16。 我需要为每个向量创建一个唯一的数字,但具有相同内容的向量必须给予相同的数字。 例如,以下载体:

[1, 2, 3, 4]
[1, 2, 3, 4]
[6, 2, 4, 1]

可能会被分配数字2,2和4。

也是订单计数。所以载体

[1, 2, 3, 4]
[2, 1, 4, 3]

应该得到不同的价值。

有没有可靠的方法来计算这样一组矢量的单个数字?

总结价值必须:

  • 对于完全相同的矢量(订单计数!)
  • 是相同的
  • 保证对于不同的值是唯一的 必须一次计算一个向量的值...即给出一个向量,得到值,然后得到下一个向量,依此类推。

这样做的全部目的是我对另一种索引不同向量的方法感兴趣,例如将它们全部添加到一组或类似的东西中。

1 个答案:

答案 0 :(得分:0)

为了保证完美的独特性,您必须从每个数字中组成大量数字。鉴于您指定允许签名的int16值,您将获得以下64位散列键:

[n1, n2, n3, n4] => n1 + n2*2^16 + n3*2^32 + n4*2^48