|
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