Wert in Map finden
-
hi,
Wie kann ich in einer Map (zBsp map<int, Object*> ) nach nem Wert suchen?
Mit .find() geht ja nur mit dem Key, ich will aber nach dem Objekt suchen.Danke im vorraus
-
Hallo
nach Wert suchen bietet Map nicht an, es werden nur die Keys indiziert.
Da must du schon selber mit Iteratoren die Elemente durchgehen und second vergleichen.
bis bald
akari
-
Ok, Danke.
Wie geht das am effektivsten?
Oder ich mach eine Umkehrung, ne Map mit <Object*, int>
-
Dann musst du aber eine Multimap verwenden bei der Umkrehrung, sonst gehen dir Keys verloren. Wenn nämlich ein Value zu mehreren unterschiedlichen Keys gehört, würde dir bei der Umkehrung 1 Key abhanden gehen. Bei einer Multimap kann ein Key mehrere Values enthalten, dass wäre für eine Umkehrung besser geeignet, aber ich denke nicht das es sich lohnen würde die Map irgendwie umzukehren um dann nach dem Wert zu suchen. Dann lieber über die map iterieren.
-
Hallo
map<int, Object*> mymap; typedef map<int, Object*>::iterator myit; Object* tofind = ...; myit it = mymap.begin(); while ((it != mymap.end()) && (it->second != tofind)) ++it; if (it == mymap.end()) // nicht gefunden else // gefunden
bis bald
akari
-
Nach dem Objekt suchen, macht nur dann Sinn, wenn man den Key haben moechte. Ansonsten hat man ja schon das Objekt zum Vergleichen. In diesem Fall ist es performant sich den Key im Objekt zu merken, so dass man nicht linear suchen muss.