Heim > Backend-Entwicklung > C++ > Wie behebe ich Fehler bei der ungeordneten Kartenkompilierung mit Paarschlüsseln?

Wie behebe ich Fehler bei der ungeordneten Kartenkompilierung mit Paarschlüsseln?

DDD
Freigeben: 2024-12-16 06:41:25
Original
332 Leute haben es durchsucht

How to Resolve Unordered Map Compilation Errors with Pair Keys?

Ungeordneter Kartenkompilierungsfehler mit Paarschlüsseln

Beim Versuch, eine ungeordnete Karte zu erstellen, bei der die Schlüssel Paare sind, kann der folgende Fehler auftreten :

Implicit instantiation of undefined template 'std::__1::hash, std::__1::basic_string >>'
Nach dem Login kopieren

Dieser Fehler tritt auf, weil ungeordnete Karten die Definition von Hash-Funktionen für ihre Schlüsseltypen erfordern. Während der Hash standardmäßig verfügbar ist, wird für „pair“ keine Hash-Funktion bereitgestellt.

Lösung: Bereitstellung einer benutzerdefinierten Hash-Funktion

Um dieses Problem zu beheben, müssen Sie Sie müssen eine benutzerdefinierte Hash-Funktion für Ihren Paarschlüsseltyp definieren. Hier ist eine Beispielimplementierung:

struct pair_hash {
    template<class T1, class T2>
    size_t operator()(const pair<T1, T2>& p) const {
        auto h1 = hash<T1>()(p.first);
        auto h2 = hash<T2>()(p.second);
        return h1 ^ h2;
    }
};
Nach dem Login kopieren

Diese Hash-Funktion kombiniert die Hash-Werte der einzelnen Komponenten des Paares mit bitweisem XOR (^).

Verwendung der benutzerdefinierten Hash-Funktion

Sobald Sie die Hash-Funktion definiert haben, können Sie damit eine ungeordnete Karte mit Paarschlüsseln erstellen folgt:

using Vote = pair<string, string>;
using Unordered_map = unordered_map<Vote, int, pair_hash>;

Unordered_map um;
Nach dem Login kopieren

Mit dieser Änderung tritt der Kompilierungsfehler nicht mehr auf und Sie können die ungeordnete Karte wie erwartet verwenden.

Das obige ist der detaillierte Inhalt vonWie behebe ich Fehler bei der ungeordneten Kartenkompilierung mit Paarschlüsseln?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage