Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Asigna los valores de elementos de un intervalo de origen a un rango de destino, iterando con la secuencia de origen de elementos y asignándoles nuevas posiciones hacia delante.
template<class InputIterator, class OutputIterator>
OutputIterator copy(
InputIterator _First,
InputIterator _Last,
OutputIterator _DestBeg
);
Parámetros
_First
Un iterador de entrada que dirige la posición del primer elemento del intervalo de origen._Last
Un iterador de entrada que dirige la posición que es una más allá del último elemento en el intervalo de origen._DestBeg
Un iterador de salida que dirige la posición del primer elemento del intervalo de destino.
Valor devuelto
Un iterador de salida que dirige la posición que es una más allá del último elemento en el rango de destino, es decir, el iterador dirige _Result + (_Last – _First ).
Comentarios
El intervalo de origen debe ser válido y debe haber suficiente espacio en el destino para contener todos los elementos que se copian.
Puesto que el algoritmo copia los elementos de origen en orden a partir del primer elemento, el intervalo de destino puede superponer con el intervalo de origen proporcionado a la posición de _Last de intervalo de origen no está contenido en el rango de destino.copia se puede utilizar para mover elementos a la izquierda pero no a la derecha, a menos que no haya superposición entre el origen y los rangos de destino.Para desplazarse a la derecha cualquier número de posiciones, use el algoritmo de copy_backward .
El algoritmo de copia modificar únicamente los valores indicada por los iteradores, asignando valores nuevos elementos en el intervalo de destino.No se puede utilizar para crear nuevos elementos y no puede insertar elementos en un contenedor vacío directamente.
copy tiene dos formularios relacionados:
Para obtener información sobre cómo estas funciones se comportan, vea Iteradores comprobados.
Ejemplo
// 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;
}
Para otra demostración de ejemplo que muestra cómo usar la copia, vea accumulate, copy, y vector::push_back.
Output
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 )
Requisitos
encabezado: <algoritmo>
espacio de nombres: std