copier
Affecte les valeurs des éléments d'une plage source à une plage de destination, parcourant la séquence source d'éléments et l'affectation de nouvelles position dans une direction par progression.
template<class InputIterator, class OutputIterator>
OutputIterator copy(
InputIterator _First,
InputIterator _Last,
OutputIterator _DestBeg
);
Paramètres
_First
Un itérateur adressant la position du premier élément dans la plage source._Last
Un itérateur d'entrée adressage la position qui est une après l'élément final dans la plage source._DestBeg
Un itérateur de sortie adressage la position du premier élément dans la plage de destination.
Valeur de retour
Un itérateur de sortie adressage la position qui est une après l'élément final dans la plage de destination, c. - à-d., 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 qui sont copiés.
Étant donné que l'algorithme copie les éléments de dans le début de commande avec le premier élément, la plage de destination peut chevaucher la plage source a fourni la position d'_Last de la plage source n'est pas contenue dans la plage de destination. copier peut être utilisé pour déplacer des éléments vers la gauche mais pas le droit, à moins qu'il n'y a pas de chevauchement entre les plages de destination. Déplacer vers la droite un certain nombre de positions, utilisez l'algorithme d'copy_backward.
L'algorithme de copier modifie uniquement les valeurs désigné par les itérateurs, l'affectation de nouvelles valeurs aux éléments dans la plage de destination. Il est impossible de l'utiliser pour créer de nouveaux éléments et ni pour insérer directement des éléments dans un conteneur vide.
copy a deux formulaires connexes :
Pour plus d'informations sur le comportement de ces fonctions, 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 obtenir un exemple qui indique 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 : <algorithme>
Espace de noms : std