Como han mencionado otros, en C usaría memcpy . Sin embargo, tenga en cuenta que esto hace una copia de memoria sin formato, por lo que si sus estructuras de datos tienen un puntero a sí mismas o entre sí, los punteros en la copia seguirán apuntando a los objetos originales.
En C ++ también se puede utilizar memcpysi los miembros de la matriz son POD (es decir, tipos esencialmente que también se podría haber utilizado sin cambios en C), pero, en general, memcpyserá no ser permitido. Como han mencionado otros, la función a utilizar esstd::copy .
Habiendo dicho eso, en C ++ rara vez debería usar matrices sin procesar. En su lugar, debe usar uno de los contenedores estándar ( std::vectores el más cercano a una matriz incorporada, y también creo que es el más cercano a las matrices de Java, más cerca que las matrices de C ++ simples, de hecho, pero std::dequeo std::listpuede ser más apropiado en algunos casos) o, si usa C ++ 11,std::array que está muy cerca de las matrices integradas, pero con semántica de valor como otros tipos de C ++. Todos los tipos que mencioné aquí se pueden copiar por asignación o construcción de copia. Además, puede realizar una "copia cruzada" de opne a otro (e incluso de una matriz incorporada) utilizando la sintaxis de iterador.
Esto brinda una descripción general de las posibilidades (supongo que se han incluido todos los encabezados relevantes):
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 memmoveyman memcpy