Maison >développement back-end >C++ >Comment puis-je utiliser correctement les pointeurs comme clés dans un std::map ?
Utilisation de pointeurs comme clés dans std::map
Lors de l'utilisation de pointeurs comme clés dans un std::map, il est crucial de spécifier un foncteur de comparaison pour permettre des comparaisons basées sur les valeurs pointées plutôt que sur les pointeurs eux-mêmes.
Problème :
Dans l'extrait de code fourni, vous utilisez std::map
Solution :
Pour résoudre ce problème, utilisez une fonction de comparaison qui compare les chaînes terminées par un caractère nul pointées par les touches char*. Voici un exemple :
struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } }; std::map<char *, int, cmp_str> g_PlayerNames;
Dans cet exemple, la structure cmp_str définit une fonction Operator() qui compare les chaînes pointées à l'aide de std::strcmp. Cela garantit que les clés de mappage sont comparées en fonction de leurs valeurs de chaîne, et non de leurs valeurs de pointeur. En utilisant ce foncteur de comparaison, vous pouvez manipuler correctement la carte en fonction des chaînes sous-jacentes terminées par un caractère nul.
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!