Jak poprawnie zmieścić niestandardową strukturę?
W języku C ++ istnieje domyślny szablon funkcji skrótustd::hash<T>
dla najbardziej prostych typów, takich jakstd::string
, int
itd. Przypuszczam, że te funkcje mają dobrą entropię, a odpowiadający rozkład losowej zmiennej jest statystycznie jednolity. Jeśli tak nie jest, udajmy, że tak jest.
Następnie mam strukturę:
struct CustomType {
int field1;
short field2;
string field3;
// ...
};
Chcę to skreślić, używając oddzielnych skrótów niektórych pól, powiedzmy,std::hash(field1)
istd::hash(field2)
. Oba skróty są w zestawie możliwych wartości typusize_t
.
Co to jest dobra funkcja haszująca, która może połączyć oba te wyniki i odwzorować je z powrotemsize_t
?