【发布时间】:2008-09-15 18:40:42
【问题描述】:
在 C++ 中从两个(或更多)短整数生成唯一 ID 的最佳方法是什么?我正在尝试唯一标识图中的顶点。顶点包含两到四个短整数作为数据,理想情况下,ID 是它们的某种散列。比起速度或易用性,更喜欢便携性和独特性。
这里有很多很棒的答案,我今晚将全部尝试,看看最适合我的问题的答案。再说几句我在做什么。
图表是来自音频文件的样本集合。我使用该图作为马尔可夫链从旧文件生成一个新的音频文件。由于每个顶点存储了一些样本并指向另一个样本,并且样本都是短整数,因此从数据中生成 ID 似乎很自然。将它们组合成一个 long long 听起来不错,但也许我只需要像 0 1 2 3 generateID 这样简单的东西。不确定需要多少空间来保证唯一性,如果每个顶点存储 2 个 16 位样本,那么有 2^32 种可能的组合是否正确?那么如果每个顶点存储 4 个样本,那么有 2^64 种可能的组合?
与此问题无关的库和平台特定解决方案。我不希望任何可能编译我的程序的人不得不下载其他库或更改代码以适应他们的操作系统。
【问题讨论】: