Frage

Ich versuche, die zweite Element Größe aller Elemente in einer stl Karte mit einem Lambda-Ausdruck

drucken
map<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!

War es hilfreich?

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
scroll top