Utilisation de paires comme clés dans des cartes non ordonnées
Lors de la tentative de déclaration d'une carte non ordonnée où les clés sont des paires (Vote = paire Cette fonction de hachage combine les valeurs de hachage des composants de la paire à l'aide de l'opérateur XOR. Pour l'utiliser, modifiez la déclaration unordered_map comme suit : Cette approche permet la création de cartes non ordonnées avec des paires comme clés en fournissant une fonction de hachage adaptée. Cependant, il convient de noter que cette implémentation simpliste peut ne pas présenter de propriétés de hachage optimales et envisager d'explorer la fonction hash_combine de Boost ou de définir hash_value pour de meilleurs résultats. 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!Implicit instantiation of undefined template 'std::__1::hash, std::__1::basic_string > >'</p>
<p>Cette erreur survient car unordered_map s'appuie sur une fonction de hachage adaptée à son type de clé. Étant donné que la fonction de hachage par défaut n'est pas applicable aux paires, vous devez fournir une fonction de hachage personnalisée.</p>
<p>Par exemple, considérez la fonction de hachage personnalisée suivante (pair_hash) :</p>
<pre class="brush:php;toolbar:false">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;
}
};
using Vote = std::pair<std::string, std::string>;
using Unordered_map = std::unordered_map<Vote, int, pair_hash>;