Considere a seguinte matriz:
char arr1 [] = 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o';Esta é uma variedade de dez caracteres das letras, 'f' para 'O'. O nome desta matriz é arr1. Considere a seguinte matriz:
char arr2 [] = 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o';O nome desta matriz é arr2. Observe que ambos os conteúdos são os mesmos. ARR2 seria uma cópia profunda do ARR1 se ambos o Initializer_lists estivessem em diferentes regiões na memória do computador. Este artigo explica, cópia manual profunda da matriz e cópia profunda automática da matriz, em c++.
Conteúdo do artigo
- Cópia profunda manual da matriz
- Cópia profunda automática da matriz
- Conclusão
Cópia profunda manual da matriz
Com esta abordagem, duas matrizes do mesmo tamanho são criadas. O primeiro tem conteúdo enquanto o segundo não tem conteúdo. O conteúdo do primeiro é copiado no segundo usando o loop for. O programa a seguir ilustra o seguinte:
#incluirA primeira linha do programa inclui o cabeçalho C ++ iostream (biblioteca) para entrada e saída. Esta primeira linha é uma diretiva. A segunda linha não é uma diretiva. É uma declaração. Ele insiste que qualquer nome não precedido por std :: é do espaço de nome padrão. Depois disso é a função principal C ++.
A primeira linha na função principal () é uma diretiva. Ele define o tamanho de ambas as matrizes, para ser 10. Não termina com um semicolon. Termina com a imprensa do teclado Enter a tecla '\ n' . Essa linha poderia ter sido igualmente "int size = 10;". A linha depois é uma declaração que define a primeira matriz. A linha a seguir é a declaração da segunda matriz, sem inicialização prática, mas com o mesmo tamanho.
O próximo segmento de código na função principal faz a cópia, elemento por elemento, do primeiro ao segundo array.
Os dois segmentos de código a seguir podem ser adicionados, para imprimir ambos os conteúdos da matriz no terminal (console):
para (int i = 0; iA saída deve ser,
F G H I J K L M N OCópia profunda automática da matriz
Aqui, a função std :: cópia (), da biblioteca de algoritmo C ++ é usada. Isso significa que o cabeçalho do algoritmo (biblioteca) deve ser incluído no programa. Não há necessidade de copiar, elemento por elemento, aqui. O protótipo da função std :: cópia () é:
modeloO primeiro argumento é um iterador que aponta para o primeiro elemento do contêiner de origem (lista). O segundo argumento é um iterador que aponta logo além do último elemento do contêiner de origem. O terceiro argumento é um iterador que aponta para o primeiro elemento do contêiner de destino vazio, que já deveria ter sido declarado.
Esta sintaxe pode ser interpretada para matrizes com o seguinte protótipo:
modeloPonteiro para just-past-ARR1 é o mesmo que o tamanho de ARR1 +. Portanto, o programa a seguir, cópia profunda automática de uma matriz para outra:
#incluirObserve a inclusão da biblioteca de algoritmo. "Int size = 10;" foi usado, em vez de "char arr2 [tamanho];". Observe que as matrizes ainda tinham que ser do mesmo tamanho, mas com o segundo vazio. A declaração automática de cópia é:
cópia (ARR1, ARR1+Tamanho, ARR2);A função não precisou ser precedida por "STD ::", pois existe "usando namespace std". no topo do programa.
Os dois segmentos de código a seguir podem ser adicionados para imprimir ambos os conteúdos da matriz no terminal (console):
para (int i = 0; iA saída deve ser,
F G H I J K L M N OConclusão
Em C ++, uma matriz pode ser copiada manualmente (à mão) ou automaticamente usando a função std :: cópia () da biblioteca de algoritmo C ++. Na programação de computadores, há cópia superficial e há cópia profunda. Cópia superficial é quando dois nomes diferentes de matriz (antigo e novo) se referem ao mesmo conteúdo na memória. Cópia profunda é quando os dois nomes diferentes de matriz se referem a dois independentes, mas o mesmo conteúdo, na memória. Este artigo lidou com cópia profunda e não cópia superficial.
Com a abordagem de cópia profunda manual, duas matrizes do mesmo tamanho são criadas. O primeiro tem conteúdo, enquanto o segundo não tem conteúdo. O conteúdo do primeiro é copiado para o segundo, usando o loop for.
A cópia profunda automática de uma matriz para outra em C ++ envolve a função std :: copy () da biblioteca de algoritmo C ++. Isso significa que o cabeçalho do algoritmo (biblioteca) deve ser incluído no programa. Não há necessidade de copiar o elemento por elemento com o loop for neste caso, já que a cópia é automática. O protótipo da função std :: copy (), interpretado para a matriz, é:
modelo