Heim > Backend-Entwicklung > C++ > Wie kann ich „char*'-Schlüssel in einer C „std::map' korrekt verwenden?

Wie kann ich „char*'-Schlüssel in einer C „std::map' korrekt verwenden?

Susan Sarandon
Freigeben: 2024-12-06 20:36:12
Original
762 Leute haben es durchsucht

How Can I Correctly Use `char*` Keys in a C   `std::map`?

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage