thrust

◆ count_if() [2/2]

template<typename InputIterator , typename Predicate >
thrust::iterator_traits<InputIterator>::difference_type thrust::count_if ( InputIterator  first,
InputIterator  last,
Predicate  pred 
)

count_if finds the number of elements in [first,last) for which a predicate is true. More precisely, count_if returns the number of iterators i in [first, last) such that pred(*i) == true.

Parameters
firstThe beginning of the sequence.
lastThe end of the sequence.
predThe predicate.
Returns
The number of elements where pred is true.
Template Parameters
InputIteratormust be a model of Input Iterator and InputIterator's value_type must be convertible to Predicate's argument_type.
Predicatemust be a model of Predicate.

The following code snippet demonstrates how to use count to count the number of odd numbers in a range.

#include <thrust/count.h>
...
struct is_odd
{
__host__ __device__
bool operator()(int &x)
{
return x & 1;
}
};
...
// fill a device_vector with even & odd numbers
thrust::device_vector<int> vec(5);
vec[0] = 0;
vec[1] = 1;
vec[2] = 2;
vec[3] = 3;
vec[4] = 4;
// count the odd elements in vec
int result = thrust::count_if(vec.begin(), vec.end(), is_odd());
// result == 2
See also
http://www.sgi.com/tech/stl/count.html