Boost logo

Boost Users :

Subject: Re: [Boost-users] [range] count vs count_if
From: Bill Buklis (boostusr_at_[hidden])
Date: 2012-02-10 12:39:21


On 2/9/2012 11:26 PM, John M. Dlugosz wrote:
> On 2/9/2012 3:08 PM, Bill Buklis wrote:
>
>>
>> What am I missing? How can count_if be properly expressed as count.
>> To me it seems like it
>> can't.
>>
> The value to compare against would be part of the 'pred', either
> hard-coded into it, or bound as an argument to a function that takes
> two arguments.

That makes sense, but how would that work? For example, let's say I
wanted to count the number of non-zero values in an array. With count_if
I can easily do this:

     namespace bll = boost::lambda;
     int data[] = { 1, 0, 2, 0, 3, 0, 4, 0, 5, 0 };
     size_t k = boost::count_if(data, bll::_1 != 0);

The documentation implies that this is possible with boost::count using
a filtered adaptor. Is it?

This line isn't valid:
     size_t n = boost::count(data | boost::adaptors::filtered(bll::_1
!= bll::_2), 0);

and this line will return 0 matches:
     size_t n = boost::count(data | boost::adaptors::filtered(bll::_1
!= 0), 0);

I'm sure I must be missing the obvious somewhere. Thanks in advance for
enlightening me.

-- 
Bill

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