Manipulation de données - Recherche et remplacement
Recherche et remplacement
Les algorithmes de remplacement permettent de remplacer tous les éléments d’un conteneur vérifiant une propriété particulière par un autre élément dont la valeur doit être fournie en argument. Les éléments devant être remplacés peuvent être identifiés soit par leur valeur, soit par une condition.replace, replace_if et replace_copy_if
Voici la déclaration dans la STL :template <class ForwardIterator, class T> void replace(ForwardIterator premier, ForwardIterator dernier, const T &ancienne_valeur, const T &nouvelle_valeur); template <class InputIterator, class OutputIterator, class T> void replace_copy(InputIterator premier, InputIterator dernier, OutputIterator destination, const T &ancienne_valeur, const T &nouvelle_valeur); template <class ForwardIterator, class Predicat, class T> void replace_if(ForwardIterator premier, ForwardIterator dernier, Predicat p, const T &nouvelle_valeur); template <class InputIterator, class OutputIterator, class Predicat, class T> void replace_copy_if(InputIterator premier, InputIterator dernier, OutputIterator destination, Predicat p, const T &nouvelle_valeur);
À savoir
Lorsque le type de la valeur renvoyée par un objet fonction unaire est bool, on dit que la fonction est un prédicat unaire. Un objet fonction binaire qui renvoie une valeur bool est nommé prédicat binaire. La bibliothèque C++ standard définit plusieurs prédicats courants dans l’en-tête <functional>. Ces prédicats sont listés dans le tableau 9.1.Tableau 9.1 : prédicats définis dans <functional>xe "prédicats"
Fonction | Type | Description |
---|---|---|
equal_to | binaire | arg1 == arg2 |
not_equal_to | binaire | arg1 != arg2 |
greater | binaire | arg1 > arg2 |
greater_equal | binaire | arg1 >= arg2 |
less | binaire | arg1 < arg2 |
less_equal | binaire | arg1 <= arg2 |
logical_and | binaire | arg1 && arg2 |
logical_or | binaire | arg1 ⎢⎢ arg2 |
logical_not | binaire | !arg1 |
Le code 9.4 illustre l’algorithme replace.
Code 9.4 : algorithme de recherche et de remplacement
#include <iostream> #include <algorithm> using namespace std; int main() { int tab[10] = {1, 2, 10, 9, 3, 2, 9, 4, 2, 9}; //On remplace tous les 9 par des 3 : replace(tab, tab+10, 9, 3); //On affiche le résultat : int i; for (i=0; i<10; i++) cout << tab[i] << endl; }
Le texte original de cette fiche pratique est extrait de
«Tout sur le C++» (Christine EBERHARDT, Collection
CommentCaMarche.net, Dunod, 2009)