Boost logo

Boost Users :

From: Kevin Heifner (heifner_k_at_[hidden])
Date: 2006-02-22 12:51:07


yinglcs2_at_[hidden] wrote:
> I have a for loop which pass the map.second to a
> function, like this:
> class A;
> typedef map<int, A*> MyMap;
>
> sortY(A& a);
>
> for (MyMap::iterator iter = map.begin(); iter !=
> map.end(); ++iter) {
> A *a = (*iter).second;
>
> sortY(*a);
> }
>
> how can I translate the above for() loop into for_each
> and use boost lambda?

I didn't test the following, but it should work :)

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>

using boost::lambda::_1;
using boost::lambda::bind;

std::for_each(map.begin(), map.end(),
   bind(&sortY, *bind(&MyMap::value_type::second, _1)));

KevinH

-- 
Kevin Heifner  heifner @ ociweb.com  http://heifner.blogspot.com
           Object Computing, Inc. (OCI) www.ociweb.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net