Доступ к переменным-членам через лямбда-выражение boost

Я пытаюсь напечатать вторую переменную-член всех элементов в карте stl, используя лямбда-выражение

map<int, int> theMap;
for_each(theMap.begin(), theMap.end(), 
         cout << bind(&pair<int, int>::second, _1) << constant(" "));

но это не компиляция. По сути, я хочу отменить ссылку на заполнитель. Есть идеи, что мне здесь не хватает?

Заранее спасибо!

2 ответа

Решение

std::map добавлю const к его ключу; это чтобы не испортить порядок. Ваша пара должна быть:

std::pair<const int, int>

Как говорит Dirkgently, используйте value_type чтобы всегда получить правильный тип. Многословие смягчается с помощью typedef:

typedef std::map<int, int> int_map;

int_map::value_type::second

Пытаться:

for_each(theMap.begin(), theMap.end(), 
         cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
Другие вопросы по тегам