Partager via


copy_backward

Assigne les valeurs des éléments d'une plage source à une plage de destination, itérant au sein de la séquence source d'éléments et leur assigner de nouvelles positions dans une direction descendante.

template<class BidirectionalIterator1, class BidirectionalIterator2>
   BidirectionalIterator2 copy_backward(
      BidirectionalIterator1 _First, 
      BidirectionalIterator1 _Last,
      BidirectionalIterator2 _DestEnd
   );

Paramètres

  • _First
    Un itérateur bidirectionnel adressant la position du premier élément de la plage source.

  • _Last
    Un itérateur bidirectionnel adressant la position qui est une au delà de le dernier élément dans la plage source.

  • _DestEnd
    Un itérateur bidirectionnel adressant la position de celle au delà de le dernier élément dans la plage de destination.

Valeur de retour

Un itérateur de sortie adressant la position qui est une au delà de le dernier élément dans la plage de destination, c. autrement dit., l'itérateur adresse *_DestEnd *– (_Last – _First ).

Notes

La plage source doit être valide et il doit y avoir suffisamment d'espace à la destination pour contenir tous les éléments sont copiés.

L'algorithme d' copy_backward applique des conditions plus strictes que ces l'algorithme de copie.Les deux itérateurs d'entrée et de sortie doivent être bidirectionnelles.

L'algorithme d' copy_backward est le seul algorithme de modèles Standard qui indique la plage de sortie avec un itérateur qui pointe vers la fin de la plage de destination.

Étant donné que l'algorithme copie les éléments source dans le début de commande et le dernier élément, la plage de destination peut se chevaucher avec la plage source fourni la position d' _First de la plage source n'est pas contenu dans la plage de destination.copy_backward peut être utilisé pour déplacer des éléments vers la droite mais pas la gauche, à moins qu'il n'y a aucun chevauchement entre la source et les intervalles de destination.Pour déplacer vers la gauche plusieurs emplacements, utilisez l'algorithme de copie .

L'algorithme d' copy_backward modifie uniquement des valeurs vers pointées par les itérateurs, d'assigner de nouvelles valeurs aux éléments dans la plage de destination.Il ne peut pas être utilisé pour créer de nouveaux éléments et ne peut pas insérer des éléments dans un conteneur vide directement.

copy_backward a deux formes associées :

Pour plus d'informations sur ces fonctions se comportent, consultez Itérateurs vérifiés.

Exemple

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

int main() {
   using namespace std;
   vector <int> v1, v2;
   vector <int>::iterator Iter1, Iter2;

   int i;
   for ( i = 0 ; i <= 5 ; i++ )
      v1.push_back( 10 * i );

   int ii;
   for ( ii = 0 ; ii <= 10 ; ii++ )
      v2.push_back( 3 * ii );

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

   cout << "v2 = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;

   // To copy_backward the first 3 elements of v1 into the middle of v2
   copy_backward( v1.begin( ), v1.begin( ) + 3, v2.begin( ) + 7 );

   cout << "v2 with v1 insert = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;

   // To shift the elements inserted into v2 two positions
   // to the right
   copy_backward( v2.begin( )+4, v2.begin( ) + 7, v2.begin( ) + 9 );

   cout << "v2 with shifted insert = ( " ;
   for ( Iter2 = v2.begin( ) ; Iter2 != v2.end( ) ; Iter2++ )
      cout << *Iter2 << " ";
   cout << ")" << endl;
}

Sortie

v1 = ( 0 10 20 30 40 50 )
v2 = ( 0 3 6 9 12 15 18 21 24 27 30 )
v2 with v1 insert = ( 0 3 6 9 0 10 20 21 24 27 30 )
v2 with shifted insert = ( 0 3 6 9 0 10 0 10 20 27 30 )

Configuration requise

en-tête : <algorithm>

l'espace de noms : DST

Voir aussi

Référence

Modèles Standard