Unfortunatly dies:unordered_map mit Iteratoren als Schlüssel, Iterator zu lange lang?
unordered_map<list<int>::iterator, int> foo;
nicht funktioniert, der Compiler sagt: Fehler C2338: Der C++ Standard sieht keine einen Hash für diesen Typ.
Es scheint jedoch ein Hash für 64-Bit-Integer zu sein, ist es so
unordered_map<long long, int> foo;
stattdessen verwenden speichern und einfach die Iteratoren long long
werfen?
Wie wäre es mit der Adresse des Objekts, auf das der Iterator zeigt? Vielleicht könnte ich das als Schlüssel benutzen? – testman
Das sollte funktionieren, sofern Sie den Zeiger nicht wie einen Iterator behandeln müssen. Aus Neugier, was versuchst du zu tun? Vielleicht möchten Sie eine separate Frage, in der Ihr Ziel beschrieben wird, veröffentlichen, da ich den Verdacht hege, dass Ihnen eine viel sauberere Möglichkeit zur Lösung dieses Problems fehlt. – templatetypedef
Ich möchte ein Diagramm von schweren Objekten durchlaufen, so dass ich einen Vektor von Iteratoren zu diesen Objekten habe, aber ich brauche die inverse Zuordnung auch für Breite/Tiefe erste Suche. Es gibt wahrscheinlich effiziente Graph-Bibliotheken, aber ich brauche nicht viel mehr als diese Traversierungsfunktion. – testman