... #include <boost/bind.hpp> // the A class class A { public: A() :i_(0){} void reset() { i_ = 0; } void set(int i) { i_ = i; } int get() const { return i_; } private: int i_; }; // the Sum struct struct Sum { template<typename It> Sum(It first, It last) : i_(0) { for_each(first, last, boost::bind(&Sum::add, this, _1)); } void add(int i) { i_ += i; } int i_; }; int add(int * n, const A & a) { *n += a.get(); return *n; } // main function int main(....) { vector<A> v(3); for_each(v.begin(), v.end(), boost::bind(&A::set, _1, 99)); int sum = 0; for_each(v.begin(), v.end(), boost::bind(&add, &sum, _1)); for_each(v.begin(), v.end(), boost::bind(&A::reset, _1)); int ints[10] ={1,2,3,4,5,6,7,8,9,10}; Sum s(ints, ints+10); return 0; }
#include <boost/lambda/lambda.hpp> using namespace boost::lambda; struct Sum { template<typename It> Sum(It first, It last) : i_(0) { for_each(first, last, i_ += _1); } int i_; };
Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...
doxapp c++ Zur Übersicht home