Heim > Backend-Entwicklung > C++ > Wie verwende ich Paare als Schlüssel in ungeordneten Karten?

Wie verwende ich Paare als Schlüssel in ungeordneten Karten?

Mary-Kate Olsen
Freigeben: 2024-12-11 06:55:09
Original
233 Leute haben es durchsucht

How to Use Pairs as Keys in Unordered Maps?

Paare als Schlüssel in ungeordneten Karten verstehen

Beim Versuch, eine ungeordnete Karte mit einem Paar als Schlüssel zu erstellen, kann es zu einer Kompilierung kommen Fehler. Dieser Fehler entsteht durch das Fehlen einer geeigneten Hash-Funktion für den benutzerdefinierten Schlüsseltyp Paar.

Um dieses Problem zu beheben, verlangt std::unordered_map von Benutzern, eine Hash-Funktion bereitzustellen, die speziell für den Schlüsseltyp entwickelt wurde. Diese Funktion ist für die Zuordnung des Schlüssels zu einer eindeutigen Kennung verantwortlich, was für einen schnellen und effizienten Abruf von entscheidender Bedeutung ist.

Implementierung einer benutzerdefinierten Hash-Funktion

Eine einfache, wenn auch nicht Optimalerweise kann die Hash-Funktion für ein Paar std::hash-fähiger Typen implementiert werden als folgt:

struct pair_hash {
    template <class T1, class T2>
    std::size_t operator()(const std::pair<T1, T2>& p) const {
        auto h1 = std::hash<T1>()(p.first);
        auto h2 = std::hash<T2>()(p.second);
        return h1 ^ h2; // Combine the hashes using a simple XOR
    }
};
Nach dem Login kopieren

Verwenden der benutzerdefinierten Hash-Funktion

Sobald die Hash-Funktion definiert ist, kann sie mit std::unordered_map verwendet werden, um den Kompilierungsfehler zu beheben:

#include <unordered_map>
#include <functional>
#include <string>
#include <utility>

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

int main() {
    Unordered_map um;
}
Nach dem Login kopieren

Alternative Lösungen

Für Für eine umfassendere Unterstützung und bessere Leistung sollten Sie die Verwendung von Bibliotheken wie Boost in Betracht ziehen. Boost bietet:

  • boost::hash_combine: Eine robustere Methode zum Kombinieren von Hashes
  • set_hash_value-Funktion: Bereitet Hash-Funktionen für Standardtypen wie std::pair vor

Durch die Nutzung dieser Optionen können Benutzer zuverlässiges Hashing für ihre benutzerdefinierten Schlüsseltypen in std::unordered_map sicherstellen. Ermöglicht eine effiziente und optimale Codeleistung.

Das obige ist der detaillierte Inhalt vonWie verwende ich Paare als Schlüssel in ungeordneten Karten?. 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