Sintassi:
#include <algorithm> typename iterator_traits<input_iterator>::difference_type count_if( input_iterator start, input_iterator end, UnaryPred p );
La funzione count_if ritorna il numero di elementi compresi tra start ed end
se il predicato p ritorna il valore true.
Per esempio, il codice seguente utilizza la funzione count_if con un predicato p che ritorna
true ogni volta che un elemento dentro al vettore e' uguale al valore intero 3, in questo modo vengono
contati quanti elementi all'interno del vettore corrispondono al numero intero 3.
int nums[] = { 0, 1, 2, 3, 4, 5, 9, 3, 13 }; int start = 0; int end = 9; int target_value = 3; int num_items = count_if( nums+start, nums+end, bind2nd(equal_to<int>(), target_value) ); cout << "nums[] contains " << num_items << " items matching " << target_value << endl;
Una volta eseguito il codice mostra questo output:
nums[] contains 2 items matching 3
In alternativa, lo stesso risultato si puo' ottenere con la funzione boost::bind come predicato p.
int num_items = count_if( nums+start, nums+end, boost::bind(equal_to<int>(), target_value, _1) );
count_if puo' essere utilizzato anche come contenitore vectors:
int num_items = count_if( nums.begin(), nums.end(), boost::bind(equal_to<int>(), target_value, _1) );
Argomenti collegati: count