Traduzioni di questa pagina?:

count_if

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