Hi All
I'm still plugging away at trying to make use of multi_array, but I
seem to be having a few problems! I suspect my understanding
of the basic paradigm is flawed.
I'm bit confused about views and slices. If I start with a rectangular,
2 dimensional grid, take a view of the whole grid, and then use a
single subscript to index into that view, then I expected the result
to be a view of one less dimension then the original view. However,
it seems to be a "sub_array".
#include "boost/multi_array.hpp"
struct Cell { int i; };
int main( )
{
typedef boost :: multi_array_types :: index_range range;
boost :: multi_array< Cell, 2 > grid( boost :: extents[ 9 ][ 9 ] );
boost :: multi_array< Cell, 2 > :: const_array_view< 2 > :: type const_grid_view =
grid[ boost :: indices[ range( ) ][ range( ) ] ];
boost :: multi_array< Cell, 2 > :: const_array_view< 1 > :: type const_row_view =
const_grid_view[ 5 ];
return 0;
}
The error message from the last assignment is this
sample.cpp: In function `int main()':
sample.cpp:13: error: conversion from `boost::detail::multi_array::const_sub_array<Cell, 1u, const Cell*>' to non-scalar
type `boost::detail::multi_array::const_multi_array_view<Cell, 1u, const Cell*>' requested
which seems to confirm I've got all my consts and dimensions correct.
So, why is this wrong?
Also, does the return type of sub_array, rather than array_view, mean that the contents
of the relevant cells have been copied?
Thanks
- Rob.