Come altri hanno già detto, in C useresti memcpy . Si noti tuttavia che questo esegue una copia di memoria non elaborata, quindi se le strutture di dati hanno un puntatore a se stesse o tra loro, i puntatori nella copia punteranno comunque agli oggetti originali.
In C ++ è possibile utilizzare anche memcpyse i vostri membri di matrice sono POD (che è, essenzialmente i tipi che si potrebbe anche avete usato invariato in C), ma in generale, memcpysarà non essere consentito. Come altri menzionati, la funzione da usare èstd::copy .
Detto questo, in C ++ raramente dovresti usare array non elaborati. Invece dovresti usare uno dei contenitori standard ( std::vectorè il più vicino a un array integrato, e penso anche il più vicino agli array Java - più vicino dei semplici array C ++, in effetti -, ma std::dequeo std::listpotrebbe essere più appropriato in alcuni casi) oppure, se usi C ++ 11,std::array che è molto simile agli array incorporati, ma con semantica dei valori come altri tipi C ++. Tutti i tipi che ho menzionato qui possono essere copiati per incarico o copia di costruzione. Inoltre, puoi eseguire il "cross-copy" da opne a un altro (e persino da un array integrato) utilizzando la sintassi dell'iteratore.
Questo fornisce una panoramica delle possibilità (presumo siano state incluse tutte le intestazioni pertinenti):
int main()
{
int a[] = { 1, 2, 3, 4 };
int b[4];
memcpy(b, a, 4*sizeof(int));
std::copy(a, a+4, b);
std::copy(std::begin(a), std::end(a), std::begin(b));
std::vector<int> va(a, a+4);
std::vector<int> vb = va;
std::vector<int> vc { 5, 6, 7, 8 };
vb = vc;
vb.assign(vc.begin(), vc.end());
std::vector<int> vd;
std::copy(va.begin(), va.end(), std::back_inserter(vd));
std::copy(a, a+4, vd.begin());
std::array<int, 4> sa = { 9, 10, 11, 12 };
std::array<int, 4> sb = sa;
sb = sa;
}
man memmoveeman memcpy