Manipulation de données - Inversion et symétrisation
Inversion et symétrisation
Il est possible d’inverser l’ordre des éléments d’une séquence à l’aide des algorithmes reverse et reverse_copy.Ces algorithmes sont déclarés de la manière suivante dans l’en-tête <algorithm> :
template <class BidirectionalIterator> void reverse(BidirectionalIterator premier, BidirectionalIterator dernier); template <class BidirectionalIterator, class OutputIterator> OutputIterator reverse_copy(BidirectionalIterator premier, BidirectionalIterator dernier, OutputIterator destination);
À savoir
BidirectionalIterator est un itérateur bidirectionnel. Un itérateur bidirectionnel est analogue à un itérateur en-avant à l’exception du fait que nous pouvons également le décrémenter.reverse et reverse_copy
Ces algorithmes prennent en argument les itérateurs permettant de spécifier l’intervalle de valeur qui doit être inversé. La version de cet algorithme qui permet de réaliser une copie prend un argument supplémentaire qui doit recevoir l’itérateur référençant l’emplacement destination dans lequel le résultat de l’inversion doit être stocké.Cet itérateur retourne la valeur de l’itérateur destination qui suit le dernier élément écrit.
Code 9.7 : algorithme d’inversion
#include <iostream> #include <algorithm> using namespace std; int main() { int tab[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; //On inverse le tableau : reverse(tab, tab+10); //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)