$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Ronald Garcia (garcia_at_[hidden])
Date: 2008-06-18 12:51:01
Hi Joey,
I have looked at your self-contained example, so I get the gist of  
what you're trying to do.  Rather than assigning to the array view,  
you can assign to an indices object and build the view after the  
fact.  Here's how to do the 2-dimensional case that you had commented  
out:
                      //This doesn't work, but I would love a generic  
version of this:
                      array_type::index_gen::gen_type<1,2>::type  
myindices;
                      if (desired_slice [0] == -1)
                        myindices = indices [range ()][desired_slice  
[1]];
                          else
                      if (desired_slice [1] == -1)
                        myindices = indices [desired_slice [0]][range  
()];
                      array_type::const_array_view <1>::type OneDView
                        = multi_array[myindices];
                      ret_val = (OneDView [whichPosition]);
HTH,
ron
On Jun 14, 2008, at 10:32 AM, Joey Mukherjee wrote:
>
> I am trying to use boost::multi_array and want to create a view  
> where I am
> lowering the number of dimensions, but I wish the dimension to be  
> reduced
> to be decided at runtime.
>
> I have a vector of integers and this vector size is the same as the  
> number
> of dimensions.  If the vector [1] value is -1, then the first  
> dimension
> will have all values (i.e. range ()), otherwise it will be a number
> indicating what slice to use.
>