Steven Watanabe | 22 May 06:48

Re: boost:multi_array and assign

AMDG

Thorsten Ottosen wrote:
> Lars Schouw skrev:
>   
>> Is there any easy way to assign values to a boost::multi_array?
>>
>> boost::multi_array<double, 2> abd(boost::extents[4][33]);
>> abd[0][0] = 1.00;    abd[0][1] = 0.00;    abd[0][2] = 0.00;    abd[0][3] = 0.10;
>> ...
>>
>>
>> I would like to do 
>>
>> abd = boost::assign::list_of(1.00)(0.00)(0.00)(0.10)
>>
>> But realize this might be a little more tricky with higher dimensions but still possible.
>>
>>     
>
> What do you want to do with non-provided values? Zero-initialize them?
>   

If they are going to be initialized, that's probably the most consistent
choice, given that it is what the compiler does for

double c_array[10] = { 1.0 };

The other options are
* resize the multi_array
* require that the number of elements be exact.

I guess the question that comes up is how to cleanly represent the
structure.  Should it be
list_of(list_of(1.0)(2.0))(list_of(3.0)(4.0))

or would it be easier to use if it were flattened:

boost::multi_array<double, 2> arr(boost::extents[2][2]);
arr = list_of(1.0)(2.0)
             (3.0)(4.0);

Or perhaps

boost::multi_array<double, 2> arr(list_of(1.0, 2.0)(3.0, 4.0));

In Christ,
Steven Watanabe

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Gmane