Алгоритм count_if()

Алгоритм count_if()

template class InputIterator, class Predicate

iterator_traitsInputIterator::distance_type

count_if( InputIterator first,

InputIterator last, Predicate pred );

count_if() применяет предикат pred к каждому элементу из диапазона, ограниченного парой итераторов [first,last). Алгоритм сообщает, сколько раз предикат оказался равным true.

#include algorithm

#include list

#include iostream.h

class Even {

public:

bool operator()( int val )

{ return val%2 ? false : true; }

};

int main()

{

int ia[] = {0,1,1,2,3,5,8,13,21,34};

list int,allocator ilist( ia, ia+10 );

/*

* не поддерживается в текущей реализации

*****************************************************

typedef

iterator_traitsInputIterator::distance_type

distance_type;

distance_type ia_count, list_count;

// счетчик четных элементов: 4

ia_count = count_if( &ia[0], &ia[10], Even() );

list_count = count_if( ilist.begin(), ilist_end(),

bind2nd(lessint(),10) );

******************************************************

*/

int ia_count = 0;

count_if( &ia[0], &ia[10], Even(), ia_count );

// печатается:

// count_if(): есть 4 четных элемент(а).

cout "count_if(): есть "

ia_count " четных элемент(а). ";

int list_count = 0;

count_if( ilist.begin(), ilist.end(),

bind2nd(lessint(),10), list_count );

// печатается:

// count_if(): есть 7 элемент(ов), меньших 10.

cout "count_if(): есть "

list_count

" элемент(ов), меньших 10. ";

}