Partager via


swap_ranges

Échange les éléments d'une plage avec ceux d'une autre plage de taille égale.

template<class ForwardIterator1, class ForwardIterator2> 
   ForwardIterator2 swap_ranges( 
      ForwardIterator1 _First1,  
      ForwardIterator1 _Last1, 
      ForwardIterator2 _First2 
   );

Paramètres

  • _First1
    Un itérateur par progression pointant vers la première position de la première plage dont les éléments doivent être échangés.

  • _Last1
    Un itérateur par progression pointant vers la position juste après la position finale de la première plage dont les éléments doivent être échangés.

  • _First2
    Un itérateur par progression pointant vers la première position de la deuxième plage dont les éléments doivent être échangés.

Valeur de retour

Un itérateur par progression pointant vers la position juste après la position finale de la deuxième plage dont les éléments doivent être échangés.

Notes

Les plages référencées doivent être valides; tous les pointeurs doivent être deréférençables et, dans chaque séquence, la dernière position doit être accessible à partir de la première par incrémentation. La deuxième plage doit être aussi grande que la première plage.

La complexité est linéaire avec _Last1 – _First1 échanges effectués. Si les éléments des conteneurs du même type sont permutés, la fonction membre d'swap de ce conteneur doit être utilisée, car la fonction membre a généralement une complexité constante.

Exemple

// alg_swap_ranges.cpp
// compile with: /EHsc
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>

int main( ) 
{
   using namespace std;
   vector <int> v1;
   deque <int> d1;
   vector <int>::iterator v1Iter1;
   deque<int>::iterator d1Iter1;

   int i;
   for ( i = 0 ; i <= 5 ; i++ )
   {
      v1.push_back( i );
   }

   int ii;
   for ( ii =4 ; ii <= 9 ; ii++ )
   {
      d1.push_back( 6 );
   }

   cout << "Vector v1 is ( " ;
   for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
      cout << *v1Iter1  << " ";
   cout << ")." << endl;

   cout << "Deque d1 is  ( " ;
   for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
      cout << *d1Iter1  << " ";
   cout << ")." << endl;

   swap_ranges ( v1.begin ( ) , v1.end ( ) , d1.begin ( ) );

   cout << "After the swap_range, vector v1 is ( " ;
   for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
      cout << *v1Iter1 << " ";
   cout << ")." << endl;

   cout << "After the swap_range deque d1 is   ( " ;
   for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
      cout << *d1Iter1 << " ";
   cout << ")." << endl;
}
  

Configuration requise

En-tête : <algorithme>

Espace de noms : std

Voir aussi

Référence

Bibliothèque STL (Standard Template Library)