Zeiger als Schlüssel in std::map verwenden
Bei der Verwendung von Zeigern als Schlüssel in einer std::map ist es wichtig, a anzugeben Vergleichsfunktor, um Vergleiche basierend auf den gezeigten Werten und nicht auf den Zeigern zu ermöglichen selbst.
Problem:
Im bereitgestellten Code-Snippet verwenden Sie std::map
Lösung:
Um dieses Problem zu beheben, verwenden Sie eine Vergleichsfunktion, die die nullterminierten Zeichenfolgen vergleicht, auf die die char*-Schlüssel verweisen. Hier ist ein Beispiel:
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;
In diesem Beispiel definiert die cmp_str-Struktur eine Operator()-Funktion, die die gezeigten Zeichenfolgen mit std::strcmp vergleicht. Dadurch wird sichergestellt, dass die Zuordnungsschlüssel anhand ihrer Zeichenfolgenwerte und nicht anhand ihrer Zeigerwerte verglichen werden. Durch die Verwendung dieses Vergleichsfunktors können Sie die Karte basierend auf den zugrunde liegenden nullterminierten Zeichenfolgen korrekt manipulieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeiger als Schlüssel in einer std::map korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!