Comprendre les paires comme clés dans les cartes non ordonnées
Lorsqu'ils tentent de créer une carte non ordonnée avec une paire comme clé, les utilisateurs peuvent rencontrer une compilation erreur. Cette erreur résulte de l'absence d'une fonction de hachage appropriée pour le type de clé personnalisé, paire.
Pour résoudre ce problème, std::unordered_map demande aux utilisateurs de fournir une fonction de hachage spécifiquement conçue pour le type de clé. Cette fonction est chargée de mapper la clé à un identifiant unique, ce qui est crucial pour une récupération rapide et efficace.
Mise en œuvre d'une fonction de hachage personnalisée
Une méthode simple, bien que non une fonction de hachage optimale pour une paire de types std::hash-able peut être implémentée comme suit :
struct pair_hash { template <class T1, class T2> std::size_t operator()(const std::pair<T1, T2>& p) const { auto h1 = std::hash<T1>()(p.first); auto h2 = std::hash<T2>()(p.second); return h1 ^ h2; // Combine the hashes using a simple XOR } };
Utilisation de la fonction de hachage personnalisée
Une fois la fonction de hachage définie, elle peut être utilisée avec std::unordered_map pour résoudre l'erreur de compilation :
#include <unordered_map> #include <functional> #include <string> #include <utility> using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>; int main() { Unordered_map um; }
Solutions alternatives
Pour une prise en charge plus large et de meilleures performances, envisagez d'utiliser des bibliothèques comme Boost. Boost fournit :
En tirant parti de ces options, les utilisateurs peuvent garantir un hachage fiable pour leurs types de clés personnalisés dans std::unordered_map, permettant des performances de code efficaces et optimales.
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!