Heim >Backend-Entwicklung >C++ >Wie kann ich „char*'-Schlüssel in einer C „std::map' korrekt verwenden?
Std::map mit char*-Schlüsseln verstehen
In der C-Programmierung die Verwendung von char als Schlüssel in einem std:: Karte kann zu unerwarteten Problemen führen. Dieser Artikel befasst sich mit den Herausforderungen, die mit der Verwendung von char-Schlüsseln verbunden sind, und untersucht eine Lösung zur Überwindung dieser Schwierigkeiten.
Das in der Frage bereitgestellte Codebeispiel weist Probleme auf, da std::map die Rohzeiger vergleicht und nicht die nullterminierten Zeichenfolgen, auf die sie verweisen. Um dieses Problem zu lösen, ist es notwendig, einen Vergleichsfunktor in die Karte zu integrieren.
Betrachten Sie den folgenden Codeausschnitt als Lösung:
struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } }; map<char *, int, cmp_str> g_PlayerNames;
Durch die Definition und Verwendung dieses Vergleichsfunktors wird der std::map verfügt über die Möglichkeit, die nullterminierten Zeichenfolgen, auf die die char*-Schlüssel verweisen, zu vergleichen, um eine ordnungsgemäße Funktion sicherzustellen und das in der bereitgestellten Funktion aufgetretene Problem zu lösen Code.
Das obige ist der detaillierte Inhalt vonWie kann ich „char*'-Schlüssel in einer C „std::map' korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!