I would like to know if it is possible to use memcpy to copy a float array to a particular dimension of a multi_array. ex.: I declare a 3 dimension multi_array of floats typedef boost::multi_array < float, 3 > array_type3D_f_t; int dim1 = 2; int dim2 = 2; int dim3 = 4; array_type3D_f_t valueMatrix(boost::extents[dim1][dim2][dim3]); then for each 3rd dimension I would like to copy a float array into it using memcpy (the final real multi_array will contain approx 21 000 000 elements, and thts why I do wish to iterate ). for (int i = 0; i < dim3; ++i) { // iterate over each 3rd dimension of the multi_array float *arr = NULL; arr = (float*)malloc(sizeof(float) * dim1 * dim2); function(&arr) // fills in the array (2D contiguous (dim1 * dim2)) memcpy(&valueMatrix[something...], arr, sizeof(float) * dim1 * dim2) // I want to copy the vector into the multi_array's 3rd dimension } then when I want to access an element I simply do valueMatrix[1][1][1]; what i used to do is int level = 0; while(it1 != it2){ // it1 and it2 are iterators to a list of records holding the data float* arr; readData(it1, &arr); // read the data into the array for (int j = 0; j < dim2; ++j){ for (int i = 0; i < dim1; ++i){ valueMatrix[i][j][level] = datavec[ j * dim1+i ]; } } ++it1; // change level ++level; } I would like to replace the nested loops by a memcpy, is this possible? -- Sébastien Fortier