Je suis un programmeur Java qui apprend le C/C++. Je sais donc que Java possède une fonction comme System.arraycopy() ; pour copier un tableau. Je me demandais s'il existait une fonction en C ou C++ pour copier un tableau. Je n'ai pu trouver que la mise en œuvre de la copie d'un tableau en utilisant la boucle for, les pointeurs, etc. Existe-t-il une fonction que je peux utiliser pour copier un tableau ?
Réponses
Trop de publicités?J'aime la réponse de Ed S., mais cela ne fonctionne que pour les tableaux de taille fixe et pas lorsque les tableaux sont définis comme des pointeurs.
Donc, la solution C++ où les tableaux sont définis comme des pointeurs :
#include<algorithm>
...
const int bufferSize = 10;
char* origArray, newArray;
std::copy(origArray, origArray + bufferSize, newArray);
Nota : Aucun besoin de déduire buffersize
avec 1 :
- Copie tous les éléments de la plage [premier, dernier] en commençant par le premier et en procédant au dernier - 1.
Il suffit d'inclure la bibliothèque standard dans votre code.
#include<algorithm>
La taille du tableau sera désignée par n
Votre ancien Array
int oldArray[n]={10,20,30,40,50};
Déclarez un nouveau tableau dans lequel vous devez copier la valeur de votre ancien tableau.
int newArray[n];
Utilisez cette
copy_n(oldArray,n,newArray);
En C++11, vous pouvez utiliser Copy()
qui fonctionne pour les conteneurs std
template <typename Container1, typename Container2>
auto Copy(Container1& c1, Container2& c2)
-> decltype(c2.begin())
{
auto it1 = std::begin(c1);
auto it2 = std::begin(c2);
while (it1 != std::end(c1)) {
*it2++ = *it1++;
}
return it2;
}
Je donne ici 2 façons de copier un tableau, pour le langage C et C++. memcpy y copia Les deux sont utilisables sur C++ mais copia n'est pas utilisable pour C, vous devez utiliser memcpy si vous essayez de copier un tableau en C.
#include <stdio.h>
#include <iostream>
#include <algorithm> // for using copy (library function)
#include <string.h> // for using memcpy (library function)
int main(){
int arr[] = {1, 1, 2, 2, 3, 3};
int brr[100];
int len = sizeof(arr)/sizeof(*arr); // finding size of arr (array)
std:: copy(arr, arr+len, brr); // which will work on C++ only (you have to use #include <algorithm>
memcpy(brr, arr, len*(sizeof(int))); // which will work on both C and C++
for(int i=0; i<len; i++){ // Printing brr (array).
std:: cout << brr[i] << " ";
}
return 0;
}