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
Susan SarandonOriginal
2024-12-06 20:36:12787Durchsuche

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;

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!

Stellungnahme:
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