Share via


copy

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 en avant.

template<class InputIterator, class OutputIterator>
   OutputIterator copy(
      InputIterator _First, 
      InputIterator _Last, 
      OutputIterator _DestBeg
   );

Paramètres

  • _First
    Un itérateur d'entrée adressant la position du premier élément de la plage source.

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

  • _DestBeg
    Un itérateur de sortie adressant la position du premier élément de 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 _Result + (_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.

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

L'algorithme de copy 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 a deux formes associées :

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

Exemple

// alg_copy.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 the first 3 elements of v1 into the middle of v2
   copy( v1.begin( ), v1.begin( ) + 3, v2.begin( ) + 4 );

   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 left
   copy( v2.begin( )+4, v2.begin( ) + 7, v2.begin( ) + 2 );

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

Pour une autre aspect d'exemple comment utiliser la copie, consultez l' accumulate, copy, et vector::push_back.

  

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 0 10 20 10 20 21 24 27 30 )

Configuration requise

en-tête : <algorithm>

l'espace de noms : DST

Voir aussi

Référence

Modèles Standard