Re: Linked Lists and Arrays

From: Patrick Dughi (dughi@imaxx.net)
Date: 05/02/00


> On Mon, 1 May 2000, Patrick Dughi wrote:
>
> >   Now, if you - for some reason - want to allocate memory dynamically
> > for a multidimensional array, it gets complicated because dynamic
> > allocation of an n-dimensional array actually requires dynamic
> > allocation of n 1-dimensional arrays. To allocate a 2-dimensional
> > array one must first allocate memory sufficient to hold all the
> > elements of the array, then allocate memory for pointers to each row
> > of the array.  A for loop will do this pretty well.
>
> You can treat an arbitrary dimensioned array as a single pointer of
> size x1 * x2 * ... * xN * sizeof(T).  The only thing you need is a means
> to convert from any set of coordinates to a unique linear address.  This
> is easy with two dimensions -- anyone who did graphics programming in the
> olden days should recognize this:

        Yep - the biggest problem though is that you can't access and
throw it around like you can an array.  It's quite easy to simulate
multidimensional arrays with what is, infact, a single array (or more
accurately, a single lump of contigious memory).  I always think it's
better though to put off that huge amount of work with multiple macros
which to use eventually requires a decent amount of understanding about
how the system is setup.  Granted, for most usage, something like

  PSEUDO_ARRAY(arrayname,xcoor,yxoor,zcoor);
        is pretty much the same as
  arrayname[xcoor][ycoor][zcoor];

                                                        PjD


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/10/01 PDT