Генерация уникального идентификатора в С++
Простое решение — использовать hash 64-битное целое число, где hashes младшие 16 бит — первая координата hashalgorithm вершины, следующие 16 бит hashing — вторая и так далее. Это string-hashing будет уникальным для всех digest ваших вершин, хотя и не очень hashing компактным.
Итак, вот какой-то hashalgorithm половинчатый код для этого. Надеюсь, я cxx правильно понял броски.
uint64_t generateId( uint16_t v1, uint16_t v2, uint16_t v3, uint16_t v4)
{
uint64_t id;
id = v1 | (((uint64_t)v2) << 16) | (((uint64_t)v3) << 32) | (((uint64_t)v4) << 48);
return id;
}
При cpp желании это можно сделать digest с помощью объединения (отличная digest идея от Леона Тиммерманса, см. комментарий). Очень cpp чисто таким образом:
struct vertex
{
uint16_t v1;
uint16_t v2;
uint16_t v3;
uint16_t v4;
};
union vertexWithId
{
vertex v;
uint64_t id;
};
int main()
{
vertexWithId vWithId;
// Setup your vertices
vWithId.v.v1 = 2;
vWithId.v.v2 = 5;
// Your id is automatically setup for you!
std::cout << "Id is " << vWithId.id << std::endl;
return 0;
}
c++
hash
Генерация уникального идентификатора в С++
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.