Multimap & find & findnext
-
Guten Tag zusammen,
wollte mal fragen ob es denn eine Funktion gibt mit der ich in einem Multimap nach einem Schlüssel suchen kann. Sobald ich diesen gefunden hab, möchte ich nach dem selben Schlüssel nochmal suchen und den nächstpassenden finden, usw.
findnext() ??hab gegooglet und das Forum bissl durchstöbert, werd aber nicht fündig.
Thanx im Voraus
Petom
-
Die Methode
pair<iterator, iterator> equal_range(const key_type& x);
liefert das Iterator-Paar Anfang und Ende des gesuchten Bereichs zurück.Gruß
Werner
-
map<x, y>::iterator it = mymap.find(mykeyvalue); while(it->first == mykeyvalue) { cout << it->second << endl; ++it; }Sollte gehen, was anderes fällt mir grade auch net ein.
-
Stimmt equal_range() ist besser, hab ich wieder Scheisse gelabert.
-
Danke für die Antworten.
Mit equal_range() erhalte ich die positionen vom ersten und vom letzten element. Wie aber bekomme ich die Elemente dazwischen, die zum Schlüssel passen?
-
Indem Du über die Positionen zwischen dem ersten und letzten iterierst?
-
indem du in einer Schleife durchrennst:
typedef map<...>::iterator mapIt; pair<mapIt,mapIt> range=mymap.equal_range(x); for(mapIt pos=range.first;pos!=range.second;++pos) { cout<<pos->first<<"="<<pos->second<<endl; }
-
achso, jetzt leuchtets mir ein..
vielen dank!!
Die Funktionen der STL sind super
