Ich versuche, eine ungeordnete_map zu erstellen, um Paare mit Ganzzahlen abzubilden.unordered_map mit Paar als Schlüssel - nicht kompilieren
#include <unordered_map>
using namespace std;
using Vote = pair<string, string>;
using Unordered_map = unordered_map<Vote, int>;
Ich habe eine Klasse, wo ich eine Unordered_map als ein privates Mitglied deklariert habe.
Allerdings bin ich immer diese Fehlermeldung, wenn ich zu kompilieren versuchen:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:948:38: Implicit instantiation of undefined template 'std::__1::hash<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > >'
Ich bin nicht diesen Fehler, wenn ich eine reguläre Karte wie map<pair<string, string>, int>
anstelle eines unordered_map verwenden.
Ist es nicht möglich, pair
als Schlüssel in ungeordneten Karten zu verwenden?
Um Kompilierfehler zu vermeiden, muss dieser angepasste 'operator() (...)' als ** const ** -Funktion deklariert werden (wurde mit gcc-5.2.1 verwechselt, korrekte Deklaration in der anderen Antwort unten): 'std: : size_t operator() (etw const & p) const {...} ' – Trollliar
@Trollliar Danke, behoben. –
Sie referenzieren 'hash_value', aber der Link geht zu' hash'. Ich denke, 'hash' ist der richtige Ort, weil die Dokumente für' hash_value' die Verwendung von 'hash' empfehlen. Ich dachte, ich würde Sie bearbeiten lassen, anstatt es selbst zu tun ... – PeterVermont