Mögliche Duplikate:
Wert wird überprüft existieren in einer std :: map - C ++
Wie durchquert man eine STL Map / Vektor / Liste / etc?
Hallo,
Ist es möglich, in std :: map nach einem bestimmten Wert zu suchen, ohne den Schlüssel zu kennen? Ich weiß, ich könnte über die gesamte Karte iterieren und Werte vergleichen, aber es ist möglich, eine Funktion von Std-Algorithmen zu verwenden?
Wird das helfen? STL find_if
Sie müssen eine Art Prädikat haben, entweder einen Funktionszeiger oder ein Objekt mit operator()
implementiert. Dieses Prädikat sollte nur einen Parameter haben.
Sie können Boost.Bimap verwenden, wenn Sie möchten um Werte und Schlüssel zu indexieren. Ohne dies oder Ähnliches muss dies mit roher Gewalt gemacht werden (= & gt; scannen Sie map
von Hand).
Boost.Bimap ist eine bidirektionale Karte Bibliothek für C ++. Mit Boost.Bimap Sie kann assoziative Container in erstellen welche beide Typen als Schlüssel verwendet werden können.
Es gibt (peinliche) Möglichkeiten, dies mit Standardfunktionen zu tun (zB std::find_if
) , aber diese beinhalten immer noch das Iterieren über die ganze Karte. Boost.Bimap bietet eine effiziente Indexierung in beide Richtungen und Sie können sogar noch weiter gehen mit Boost.Multi-Index .
Tags und Links c++