|
Boost Users : |
Subject: [Boost-users] Help make boost::multi_array code generic!
From: Joey Mukherjee (joeymu_at_[hidden])
Date: 2010-02-23 19:37:18
I have some code which makes use of boost::multi_array that I would
like to make more generic, but I am incapable of groking the error
messages. I am hoping some one can shed some light on this.
I have a one dimensional array of number which is actually a tensor of
variable size. I have a vector (vinfo._sizes) which contains the
size of each of the dimensions. In this case, I am using the 3D
version. I have another vector (local_subsensors) which contains a
specific slice of the 3D view (i.e. reduce the 3D to 2D) that I am
seeking or a -1 to mean I want everything in the row/column. I am
also given an X/Y variable to return out a specific value from this
new 2D matrix.
This code works in constructing a view of this type:
typedef boost::const_multi_array_ref <double, 3>array_type;
array_type::index_gen indices;
array_type multi_array (&(vals [0]), vinfo._sizes);
if ((local_subsensors [0] == -1)
&&(local_subsensors [1] == -1)) {
ret_val =
(array_type::const_array_view<2>::type (multi_array [indices [range
()][range()][local_subsensors[2]]])) [whichX][whichY];
} else
if ((local_subsensors [0] == -1)
&&(local_subsensors [2] == -1)) {
ret_val =
(array_type::const_array_view<2>::type (multi_array [indices
[range()][local_subsensors[1]][range()]])) [whichX][whichY];
} else
if ((local_subsensors [1] == -1)
&&(local_subsensors [2] == -1)) {
ret_val =
(array_type::const_array_view<2>::type (multi_array [indices
[local_subsensors[0]][range ()][range()]])) [whichX][whichY];
}
Here's my attempt at making this generic and it does not work. Can
someone tell me why?
range Dim [3];
for (unsigned int i = 0; i < vinfo._sizes.size(); ++i)
if (local_subsensors [i] == -1) Dim [i] =range ();
else Dim [i] = range (local_subsensors [i]);
slice = multi_array [indices [Dim [0]][Dim [1]][Dim [2]]];
Thanks in advance!
Joey
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net