Доступ к переменным-членам через лямбда-выражение 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(" "));