|
Boost : |
From: Jeremy Siek (jsiek_at_[hidden])
Date: 2002-01-08 07:04:13
multi_array can do what you want, it has iterators over each dimension. It
looks like this:
for (i = A.begin(); i != A.end(); ++i)
for (j = i->begin(); j != i->end(); ++j)
for (k = j->begin(); k != j->end(); ++k)
*k = values++;
On Mon, 7 Jan 2002, Gary Powell wrote:
> My problem is that for "C" code I tend to write:
>
> -------------------------------------------
>
> int carray_3D(double* A)
> {
> // Assign values to the elements
> int values = 0;
> double const* const rowLength = (sizeof(double *) * row_size);
> double const* const rowTimesCol = (rowLength * col_size);
> double const * const AEnd = A + (rowTimesCol * width_size));
> for(double * i = A; i != AEnd; )
> {
> double const * const rowEnd = i + rowTimesCol;
> for(double *j = 0; j != rowEnd; )
> {
> double *columnEnd = j + rowLength;
> for(double *k = j; k != columnEnd; ++k)
> {
> *k = values++;
> }
> j = columnEnd;
> }
> i = rowEnd;
> }
>
> ...// etc.
> return 0;
> }
>
> And that's what I want my multi-array access to generate. To not reload
> initial offsets, to do basic addition at the inner most level, not
> multiplication and addition for every access. (Without errors, as I'm sure
> the above code has!)
>
> IF you are only randomly accessing [][][], then I really like the syntax of
> multi-array. It's just what I've written (Only not anywhere as nicely) Call
> me greedy, but I want it all. Speed, easy to read source, and small code.
> (sounds like I need a better compiler!)
>
> Yours,
> -gary-
>
>
> Info: http://www.boost.org Send unsubscribe requests to: <mailto:boost-unsubscribe_at_[hidden]>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>
----------------------------------------------------------------------
Jeremy Siek http://www.osl.iu.edu/~jsiek/
Ph.D. Student, Indiana Univ. B'ton email: jsiek_at_[hidden]
C++ Booster (http://www.boost.org) office phone: (812) 855-3608
----------------------------------------------------------------------
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk