Respuesta directa:
Podemos usar la función miembro público std::vector::operator=
del contenedor std::vector
para asignar valores de un vector a otro.
- Use una función constructora
Además, una función constructora también tiene sentido. Una función constructora con otro vector como parámetro (p x
. Ej. ) Construye un contenedor con una copia de cada uno de los elementos x
, en el mismo orden.
Precaución:
- No utilice
std::vector::swap
std::vector::swap
no está copiando un vector a otro, en realidad está intercambiando elementos de dos vectores, tal como sugiere su nombre. En otras palabras, el vector de origen para copiar se modifica después de que std::vector::swap
se llama, lo que probablemente no sea lo que se espera.
- Copia profunda o superficial?
Si los elementos en el vector fuente son punteros a otros datos, a veces se necesita una copia profunda.
De acuerdo con wikipedia:
Una copia profunda, lo que significa que los campos están desreferenciados: en lugar de referencias a objetos que se copian, se crean nuevos objetos de copia para cualquier objeto referenciado, y las referencias a estos se colocan en B.
En realidad, actualmente no hay una forma integrada en C ++ para hacer una copia profunda. Todas las formas mencionadas anteriormente son poco profundas. Si es necesaria una copia profunda, puede atravesar un vector y hacer una copia de las referencias manualmente. Alternativamente, se puede considerar un iterador para atravesar. La discusión sobre el iterador está más allá de esta pregunta.
Referencias
La página de std::vector
en cplusplus.com