
On 2/1/06, Daniel Lidström
Hello!
I'm trying to use Boost.Lambda to count the total number of elements in a list of lists. This example shows what I'm trying to do:
#include
#include <algorithm> #include <list> using namespace std; using namespace boost::lambda;
int main() { int count = 0; list
ll; for_each(ll.begin(), ll.end(), var(count)+=(_1).size()); }
This will not compile: (13): error C2039: 'size': is not a member of 'boost::lambda::lambda_functor<T>' Is this possible to do? Thanks in advance!
Hälsningar, Daniel
You'll need to use lambda's bind to access the size member function: for_each(ll.begin(), ll.end(), var(count)+=bind(&list<int>::size, _1)); You might might find std::accumulate a better match for your requirements: count = accumulate(ll.begin(), ll.end(), 0, _1 + bind(&list<int>::size, _2)); Stuart Dootson