Verwendung von char* als Schlüssel in std::map
In C kann es bei der Verwendung von char-Zeigern (char) als Schlüssel in einer std::map. Dies kann auftreten, wenn Sie versuchen, eine Karte mit char-Schlüsseln zu erstellen und auf unerwartetes Verhalten stoßen.
Um dieses Problem zu beheben, ist es wichtig zu verstehen, dass std::map standardmäßig Schlüssel anhand der Zeigeradressen vergleicht. nicht die tatsächlichen Charaktere, die sie darstellen. Dies kann zu falschen Vergleichen und unzuverlässigem Verhalten führen.Um dieses Problem zu beheben, müssen Sie der Karte einen Vergleichsfunktor bereitstellen. Ein Vergleichsfunktor ist eine Funktion, die definiert, wie Schlüssel verglichen werden. Durch die Verwendung eines Funktors, der die nullterminierten Zeichenfolgen vergleicht, auf die die char*-Zeiger zeigen, können Sie sicherstellen, dass die Karte Elemente basierend auf ihren Zeichenfolgenwerten korrekt anordnet und abruft.Hier ist ein Beispiel für die Definition von a Vergleichsfunktor für char*-Schlüssel:struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } };
map<char *, int, cmp_str> BlahBlah;
Das obige ist der detaillierte Inhalt vonWie kann ich char* korrekt als Schlüssel in einer C-std::map verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!