Cómo copiar un array en C++
-
Utiliza la función
copy()
para copiar un array en C++ -
Use la función
copy_backward()
para copiar un array -
Utilice el método de
assign()
para copiar un array
Este artículo introducirá cómo copiar un array en C++.
Utiliza la función copy()
para copiar un array en C++
El método copy()
es la forma recomendada de copiar estructuras basadas en el rango con una sola llamada a la función. copy()
toma el primer y el último elemento del rango y el comienzo del array de destino. Observe que puede obtener un comportamiento indefinido si el tercer parámetro está dentro del rango fuente.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy(str_vec.begin(), str_vec.end(), new_vec.begin());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
new_vec - | Warty | Hoary | Breezy | Dapper | Edgy | Feisty |
Use la función copy_backward()
para copiar un array
El método copy_backward()
puede copiar un array en orden inverso con el elemento original, pero el orden se conserva. Cuando se copian los rangos superpuestos, hay una regla empírica que uno debe tener en cuenta cuando se usan los métodos std::copy
y std::copy_backward
: copy
es apropiado cuando se copia a la izquierda (el comienzo del rango de destino está fuera del rango de origen). Por el contrario, copy_backward
es apropiado cuando se copia a la derecha (el final del rango de destino está fuera del rango de origen).
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy_backward;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy_backward(str_vec.begin(), str_vec.end(), new_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Utilice el método de assign()
para copiar un array
assign()
es un método incorporado a un contenedor vector
, que reemplaza el contenido del objeto vector
que lo llama por elementos pasados de la gama. El método assign()
puede ser útil para copiar los vectores de los tipos que pueden ser convertidos fácilmente. En el siguiente ejemplo de código, demostramos una forma de copiar un vector char
en el vector int
con una sola llamada assign
.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> char_vec{'a', 'b', 'c', 'd', 'e'};
vector<int> new_vec(char_vec.size());
new_vec.assign(char_vec.begin(), char_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(), std::ostream_iterator<int>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
new_vec - | 97 | 98 | 99 | 100 | 101 |
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook