Combinaison de valeurs de hachage en C 0x
C 0x introduit hash<>() pour faciliter le hachage dans la bibliothèque standard. Cependant, il lui manque une fonction hash_combine intégrée similaire à l'implémentation de Boost. Cela soulève la question de savoir comment émuler une telle fonctionnalité en C 0x.
C 0x xor_combine vs. hash_combine de Boost
La fonction Boost hash_combine effectue des opérations au niveau du bit pour combiner efficacement plusieurs hacher les valeurs en une seule. Bien que C 0x fournisse xor_combine, ce n'est pas un remplacement direct de hash_combine. xor_combine ne peut être utilisé que pour combiner deux valeurs de hachage, alors que hash_combine gère un nombre arbitraire de valeurs.
Implémentation de hash_combine en C 0x
Pour implémenter hash_combine en C 0x, on peut s'inspirer de l'approche de Boost. Voici une implémentation simple :
template <class T> inline void hash_combine(std::size_t& seed, const T& v) { std::hash<T> hasher; seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); }
Cette implémentation imite l'algorithme de Boost, en utilisant une combinaison d'opérations XOR, de décalage de bits et d'addition constante pour garantir un mélange complet des valeurs de hachage.
En tirant parti Avec cette fonction hash_combine, vous pouvez facilement combiner plusieurs valeurs de hachage en un seul résultat en utilisant les puissantes capacités de hachage de C 0x.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!