Thank you again for your help, you mention specifying a different storage order for the multi_array, but you did not explain further... I tried what you have suggested and it seems to work just fine. Could you elaborate on the storage order stuff? Do you have any suggestions? Ronald Garcia wrote:
Hello Sebastien,
On Aug 11, 2006, at 9:31 AM, Sebastien Fortier wrote:
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.
In some situations you can, but not as your array is currently specified.
[...]
If you change your multi_array so that the third dimension is the first dimension, then the dim1*dim2 elements will be stored contiguously in the array and you will then be able to memcpy them (or pass a pointer to the array buffer and avoid copying altogether). If you require the dimensions of the multi_array to be as you specified, then you will need to specify a different storage order for the array in order to make the dim1*dim2 elements contiguous.
for example: /* switch the dimensions of the array */ array_type3D_f_t valueMatrix(boost::extents[dim3][dim1][dim2]);
/* ... */ for (int i=0; i != dim3; ++i) { function(valueMatrix[i].origin()); // directly passes the multi_array buffer to the function }
HTH, ron
[...]
------------------------------------------------------------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Sébastien Fortier