Manipulation de données - Inversion et symétrisation

Décembre 2016

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)

A voir également :

Ce document intitulé «  Manipulation de données - Inversion et symétrisation  » 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.