Considérez le tableau suivant:
char arr1 [] = 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o';Ceci est un tableau de dix caractères des lettres, «f» à «o». Le nom de ce tableau est Arr1. Considérez le tableau suivant:
char arr2 [] = 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o';Le nom de ce tableau est Arr2. Notez que les deux contenus sont les mêmes. ARR2 serait une copie profonde de l'ARR1 si les deux initialiseurs se trouvent dans différentes régions de la mémoire de l'ordinateur. Cet article explique, la copie en profondeur manuelle du tableau et la copie profonde automatique du tableau, en C++.
Contenu de l'article
- Copie profonde manuelle du tableau
- Copie profonde automatique du tableau
- Conclusion
Copie profonde manuelle du tableau
Avec cette approche, deux tableaux de la même taille sont créés. Le premier a du contenu tandis que le second n'a pas de contenu. Le contenu du premier est copié dans le second en utilisant la boucle pour. Le programme suivant illustre ceci:
#inclureLa première ligne du programme comprend l'en-tête C ++ IoStream (bibliothèque) pour l'entrée et la sortie. Cette première ligne est une directive. La deuxième ligne n'est pas une directive. C'est une déclaration. Il insiste sur le fait que tout nom non précédé de std :: est de l'espace de noms standard. Par la suite est la fonction principale C ++.
La première ligne de la fonction principale () est une directive. Il définit la taille des deux tableaux, à 10. Ça ne se termine pas par un point-virgule. Il se termine par la pression du clavier Entrée de la touche '\ n' . Cette ligne aurait également pu être «int size = 10»;. La ligne après est une déclaration qui définit le premier tableau. La ligne suivante est la déclaration du deuxième tableau, sans initialisation pratique, mais de la même taille.
Le segment de code suivant dans la fonction principale, fait l'élément Copie, élément, du premier au deuxième tableau.
Les deux segments de code suivants peuvent être ajoutés pour imprimer les deux contenus du tableau au terminal (console):
pour (int i = 0; iLa sortie doit être,
F g h i j k l m n oCopie profonde automatique du tableau
Ici, la fonction std :: copy () de la bibliothèque d'algorithme C ++ est utilisée. Cela signifie que l'en-tête d'algorithme (bibliothèque) doit être inclus dans le programme. Il n'est pas nécessaire de copier, élément par élément, ici. Le prototype de la fonction std :: copy () est:
modèleLe premier argument est un itérateur qui pointe vers le premier élément du conteneur source (liste). Le deuxième argument est un itérateur qui pointe juste au-delà du dernier élément du conteneur source. Le troisième argument est un itérateur qui pointe vers le premier élément du conteneur de destination vide, qui aurait déjà dû être déclaré.
Cette syntaxe peut être interprétée pour les tableaux avec le prototype suivant:
modèlepointer-to-juste passant-ARR1 est le même que la taille de l'arr1 +. Ainsi, le programme suivant, la copie profonde automatique d'un tableau à un autre:
#inclureNotez l'inclusion de la bibliothèque d'algorithme. «Int size = 10;» a été utilisé, au lieu de «char arr2 [taille];». Notez que les tableaux devaient encore être de la même taille mais avec le second vide. La déclaration de copie automatique est:
Copie (Arr1, Arr1 + Size, Arr2);La fonction n'a pas besoin d'être précédée de «std ::», car il y a «Utilisation de l'espace de noms std»; en haut du programme.
Les deux segments de code suivants peuvent être ajoutés pour imprimer les deux contenus du tableau au terminal (console):
pour (int i = 0; iLa sortie doit être,
F g h i j k l m n oConclusion
En C ++, un tableau peut être copié manuellement (à la main) ou à l'aide de la fonction std :: copy () de la bibliothèque de l'algorithme C ++. Dans la programmation informatique, il y a une copie peu profonde et il y a une copie profonde. La copie peu profonde est lorsque deux noms de tableaux différents (anciens et nouveaux) se réfèrent au même contenu en mémoire. La copie profonde, c'est lorsque les deux noms de tableau différents se réfèrent à deux contenus indépendants, mais même, en mémoire. Cet article a traité de copie profonde et non de copie peu profonde.
Avec une approche manuelle de copie profonde, deux tableaux de la même taille sont créés. Le premier a du contenu, tandis que le second n'a pas de contenu. Le contenu du premier est copié au second, en utilisant la boucle.
La copie profonde automatique d'un tableau à un autre en C ++ implique la fonction std :: copy () de la bibliothèque de l'algorithme C ++. Cela signifie que l'en-tête d'algorithme (bibliothèque) doit être inclus dans le programme. Il n'est pas nécessaire de copier l'élément par élément avec la boucle pour ce cas car la copie est automatique. Le prototype de la fonction std :: copy (), interprété pour le tableau, est:
modèle