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)