Manipulation de données - count et count_if

 

count et count_if

Poursuivons avec les algorithmes count et count_if qui permettent de compter le nombre d’éléments d’un conteneur dont la valeur est égale à une valeur donnée ou vérifiant un critère spécifié par l’intermédiaire d’un prédicat unaire. Ces deux algorithmes sont déclarés de la manière suivante dans l’en-tête <algorithm> :

template <class InputIterator, class T> 
iterator_traits<InputIterator>::difference_type 
    count(InputIterator premier, InputIterator dernier, const T &valeur); 

template <class InputIterator, class Predicat> 
iterator_traits<InputIterator>::difference_type 
    count_if(InputIterator premier, InputIterator dernier, Predicat p);


Vous constatez que ces algorithmes prennent en argument deux itérateurs spécifiant l’intervalle des éléments sur lesquels le test doit être effectué, et la valeur avec laquelle ces éléments doivent être comparés ou un prédicat unaire. Dans ce cas, le résultat de ce prédicat indique si l’élément qu’il reçoit en argument doit être compté ou non.  

Code 9.10 : algorithme de décompte d’éléments

#include <iostream> 
#include <functional> 
#include <algorithm> 

using namespace std; 

bool parity_even(int i) 
{ 
   return (i & 1) == 0; 
} 

int main() 
{ 
   int tab[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 
   //On compte le nombre d’éléments pairs : 
      cout << "Nombre d’éléments pairs dans le tableau {0,1,2,3,4,5,6,7,8,9}: "; 
   cout << count_if(tab, tab+10, ptr_fun(&parity_even)) << endl; 
}


Le texte original de cette fiche pratique est extrait de
«Tout sur le C++» (Christine EBERHARDT, Collection
CommentCaMarche.net, Dunod, 2009)

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

Ce document intitulé «  Manipulation de données - count et count_if  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.