boost:multi_array and assign

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. Lars

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? -Thorsten

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
participants (3)
-
Lars Schouw
-
Steven Watanabe
-
Thorsten Ottosen