multimap::find liefert nur ein Vorkommen
-
Hallo!
Ich habe eine Multimap aus der Standard Template Library.--> multimap<string,int> m_id;
Das heißt: string = Index der Map
int = Verweis auf andere DatenBekanntlich kann bei einer Multimap der Index öfter vorkommen, muss also nicht eindeutig sein.
Wenn ich jetzt eine Suchmethode programmieren möchte, und ich verwende dazu die Funktion
multimap::find(key);
liefert er mir immer nur das erste Vorkommen des keys.
Ich möchte jedoch alle Vorkommen des keys auflisten.Weiß jemand eine Möglichkeit, das zu realisieren?
Danke im Voraus und schönen Sonntagnachmittag noch
lg Gerhard
-
pair<iterator, iterator> equal_range(const key_type& k)
-
Danke vorerst für den Tipp mit der Funktion.
Aber ich weiß leider nicht ganz wie man das jetzt in meinem Beispiel einsetzt.
Danke im Voraus
lg Gerhard
-
Bitte keine Mühe mehr
Ich habs schon selber zum laufen gebracht
Danke
-
Bei der selben Suchfunktion wie oben angeführt:
Gibt es eine vordefinierte Funktion mit der ich nach Substrings im Key suchen kann?
Oder müsste ich sowas zu Fuß programmieren -> alle Elemente sequentiell durchgehen und auf den Substring prüfen = sehr aufwendig bei Tausenden von Datensätzen?
lg Gerhard
-
Sah so selbsterklärend aus
typedef std::multimap<std::string, int> IdMap; IdMap m_id; // ... pair<IdMap::iterator, IdMap::iterator> range = m_id.equal_range("foo"); for ( ; range.first != range.second; ++range.first ) { // range.first->second ist deine id }
edit:
Glaub ich nicht, aber falls gleiche substrings häufiger vorkommen die Ergebnisse cachen.
-
du weißt nicht zufällig noch eine lösung auf mein 2. angesprochenes problem?
lg gerhard
-
sorry hab das untere übersehen
danke für deine hilfe
-
Siehe mein edit.
Aber wenn's darum geht wirklich einfach nur schnell zu sein und du ein wenig () Speicher erübrigen kannst lohnt es sich evtl. statt eine multimap zu benutzen einen Index aufzubauen, suchmaschinenmäßig.