1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #include <iostream>
#include <vector>
#include <algorithm>
#include <boost/bind.hpp>
void additionner(int const lhs_, int const rhs_)
{
std::cout<<lhs_<<" + "<<rhs_<<" = "<<lhs_+rhs_<<"\n";
}
struct foncteur
{
foncteur(int const rhs_):rhs(rhs_){}
void operator()(int i_)const
{
additionner(i_,rhs);
}
private:
int const rhs;
};
int main()
{
std::vector<int> v = {0,1,2,3,4,5,6,7,8,9};// uniquement C++0x :D
// foncteur (C++ actuel) :
std::for_each(
v.begin(),
v.end(),
foncteur(10)
);
// bind (C++ actuel) :
std::for_each(
v.begin(),
v.end(),
boost::bind(additionner,_1,100)
);
// lambda (C++0x mais transcriptible avec boost) :
std::for_each(
v.begin(),
v.end(),
[](int const lhs_){additionner(lhs_,1000);}
);
return 0;
} |
Partager