Zugriff auf Membervariablen durch Boost-Lambda-Platzhalter
Frage
Ich versuche, die zweite Element Größe aller Elemente in einer stl Karte mit einem Lambda-Ausdruck
druckenmap<int, int> theMap;
for_each(theMap.begin(), theMap.end(),
cout << bind(&pair<int, int>::second, _1) << constant(" "));
aber das ist Kompilieren nicht. Ich möchte im Wesentlichen auf den Platzhalter de-referenzieren. Jede Idee, was ich hier fehlt?
Vielen Dank im Voraus!
Lösung
std::map
wird const
seinen Schlüssel hinzuzufügen; dies ist die Reihenfolge durcheinander zu verhindern. Ihr Paar sollte sein:
std::pair<const int, int>
Wie dirkgently schlägt vor, verwenden Sie die value_type
immer den richtigen Typ zu bekommen. Die Ausführlichkeit mit einem typedef gelindert:
typedef std::map<int, int> int_map;
int_map::value_type::second
Andere Tipps
Versuchen Sie:
for_each(theMap.begin(), theMap.end(),
cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow