Resposta direta:
Podemos usar a função std::vector::operator=
de membro pública do contêiner std::vector
para atribuir valores de um vetor para outro.
- Use uma função construtora
Além disso, uma função construtora também faz sentido. Uma função construtora com outro vetor como parâmetro (por exemplo x
) constrói um contêiner com uma cópia de cada um dos elementos x
, na mesma ordem.
Cuidado:
- Não use
std::vector::swap
std::vector::swap
não está copiando um vetor para outro, na verdade está trocando elementos de dois vetores, exatamente como o nome sugere. Em outras palavras, o vetor de origem para copiar é modificado após std::vector::swap
ser chamado, o que provavelmente não é o que você espera.
Se os elementos no vetor de origem são ponteiros para outros dados, algumas vezes é necessária uma cópia em profundidade.
De acordo com a wikipedia:
Uma cópia profunda, significando que os campos são desreferenciados: em vez de referências a objetos que estão sendo copiados, novos objetos de cópia são criados para quaisquer objetos referenciados e referências a esses colocados em B.
Atualmente, não há atualmente uma maneira interna em C ++ para fazer uma cópia profunda. Todas as formas mencionadas acima são superficiais. Se uma cópia profunda for necessária, você pode percorrer um vetor e fazer cópia das referências manualmente. Como alternativa, um iterador pode ser considerado para atravessar. A discussão sobre o iterador está além desta questão.
Referências
A página de std::vector
em cplusplus.com