#include "boost/lambda/lambda.hpp"
#include <algorithm>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;
using namespace boost;
namespace bll=boost::lambda;
int main( )
{
vector< int > v;
int i=0;
// generate vector values
generate_n(back_inserter(v), 100, ++bll::var(i));
//create the output iterator
ostream_iterator<int> oiter(cout, ",");
copy(v.begin(), v.end(), oiter);
cout << endl;
// double each value in the vector
for_each(v.begin(), v.end(), bll::_1*=2);
copy(v.begin(), v.end(), oiter);
cout << endl;
return 0;
}
Regards,
Ovanes
On Tue, Mar 23, 2010 at 10:49 AM, Robert Jones
<robertgbjones@gmail.com> wrote:
#include <algorithm>
#include <vector>
#include "boost/bind.hpp"
struct A
{
int double_it( int i ) { return i * 2; }
} a;
std::vector< int > v;
int main( )
{
for ( std::vector< int >::iterator i = v.begin( ); i != v.end( ); ++ i )
{
a.double_it( * i );
}
// Write it as a for_each/bind
std::for_each( v.begin(), v.end(), boost::bind( & A::double_it, boost::ref( a ), _1 ) );
}