Pourquoi ne puis-je pas compiler une carte unordered_map avec une paire comme clé ?
Le problème rencontré ici est l'absence d'une fonction de hachage appropriée pour le type de clé. Pour résoudre ce problème, fournissez une fonction de hachage personnalisée pour la clé de paire. Voici un exemple :
#include <unordered_map> #include <functional> #include <string> #include <utility> 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; // Simple example, for better results use boost.hash_combine } }; using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>;
Avec cette fonction de hachage personnalisée, vous pouvez désormais créer une carte unordered_map
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!