Boost logo

Boost :

From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-05-22 00:48:41


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk