Diferentes maneiras de copiar um vetor em C++

Copiar um vetor é o processo de criação de um novo vetor que contém os mesmos elementos do vetor original. Neste artigo aprenderemos diferentes maneiras de copiar um vetor em C++.

O método mais eficiente e fácil de copiar um vetor em C++ é usando operador de atribuição (=) .  Vejamos um exemplo:

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      // Assigning the vector v1 to vector v2      vector   <  int  >     v2     =     v1  ;      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

C++ também fornece mais métodos para copiar um vetor em outro vetor. Eles são os seguintes:

Índice

Usando o construtor vetorial

Outra maneira fácil de copiar um vetor no momento da declaração é passar o vetor original para o construtor de cópia de outro vetor. vetor.

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      // Copying vector v1 into vector v2      vector   <  int  >     v2  (  v1  );      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

Usando cópia()

O cópia() function é nosso método preferido para copiar dados em C++. Ele pode copiar um vetor para outro usando seus iteradores. Além disso o copiar_se() variante desta função também pode realizar cópia seletiva com base em uma função de predicado unária.

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      vector   <  int  >     v2  ;      // Copying vector v1 into vector v2      copy  (  v1  .  begin  ()     v1  .  end  ()     back_inserter  (  v2  ));      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

Explicação: Temos que usar back_insertor() função se não tivermos especificado o tamanho do vetor durante a declaração. Se já tivermos espaço suficiente, teremos que passar v2.begin() em vez de.

Usando vetor atribuir()

O atribuição de vetor() O método é equivalente ao método do operador =, mas precisa do iterador para o vetor a ser copiado.

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      vector   <  int  >     v2  ;      // Copying the vector v1 into vector v      v2  .  assign  (  v1  .  begin  ()     v1  .  end  ());      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

Usando inserção de vetor()

O inserção de vetor() O método fornece uma versão que pode copiar todos os elementos de um determinado intervalo. Isso pode ser usado para copiar o vetor inteiro para outro de maneira semelhante ao método assign().

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      vector   <  int  >     v2  ;      // Copying vector v1 into vector v2      v2  .  insert  (  v2  .  begin  ()     v1  .  begin  ()     v1  .  end  ());      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

Usando vetor push_back()

Empurre todos os elementos do primeiro vetor para o segundo vetor usando vetor push_back() método. Um loop pode ser iterar através do primeiro vetor.

C++
   #include          using     namespace     std  ;   int     main  ()     {      vector   <  int  >     v1     =     {  2       4       1       5       3  };      vector   <  int  >     v2  ;      // Copying vector v1 into vector v2      for     (  auto     i     :     v1  )      v2  .  push_back  (  i  );      for     (  auto     i     :     v2  )      cout      < <     i      < <     ' '  ;      return     0  ;   }   

Saída
2 4 1 5 3  

Este método fornece mais controle, pois também podemos modificar o elemento, se necessário, antes de copiar.