Каков наилучший способ создать уникальный идентификатор из двух (или более) коротких целых чисел в С++? Я пытаюсь однозначно идентифицировать вершины в графе. Вершины содержат от двух до четырех коротких целых чисел в качестве данных, и в идеале идентификатор должен быть своего рода их хэшем. Предпочитайте мобильность и уникальность скорости или простоте.
Здесь много отличных ответов, сегодня вечером я попробую их все, чтобы увидеть, что лучше всего подходит для моей проблемы. Еще несколько слов о том, чем я занимаюсь.
График представляет собой набор сэмплов из аудиофайла. Я использую график как цепь Маркова для создания нового аудиофайла из старого файла. Поскольку каждая вершина хранит несколько выборок и указывает на другую выборку, а все выборки представляют собой короткие целые числа, казалось естественным сгенерировать идентификатор из данных. Объединение их в длинное длинное звучит хорошо, но, возможно, мне нужно что-то простое, например 0 1 2 3 generateID
. не уверен, сколько места необходимо для гарантии уникальности, если каждая вершина хранит 2 16-битных выборки, есть 2 ^ 32 возможных комбинации правильно? и поэтому, если каждая вершина хранит 4 образца, существует 2 ^ 64 возможных комбинации?
Решения, специфичные для библиотеки и платформы, на самом деле не имеют отношения к этому вопросу. Я не хочу, чтобы кому-то еще, кто может скомпилировать мою программу, приходилось загружать дополнительные библиотеки или изменять код в соответствии со своей ОС.