Jonathan M Davis , dans le message (digitalmars.D.learn:34332), a écrit : > On Sunday, April 08, 2012 01:24:02 Caligo wrote: >> On Sat, Apr 7, 2012 at 11:01 PM, Jonathan M Davis <[email protected]> > wrote: >> > What do you mean my static associative arrays? Are you asking why you >> > can't >> > initialize a static variable which is an AA at compile time? e.g. >> > >> > - Jonathan M Davis >> >> The same way I can create a static array: >> >> int[4] = [1, 3, 4, 8]; // has value semantics >> >> and dynamic arrays: >> >> int[] = [1, 4, 2, 4]; // has reference semantics >> >> I want an associative array that has value semantics and it's size >> doesn't change, just like static arrays. > > Associative arrays are always on the heap. They always have reference > semantics. It would be very expensive to have an AA with value semantics. > They > contains pointers all over the place. It would be equivalent to calling dup > on > them every time that you pass them to anything. And trying to put one on the > stack would get very messy because all of the pointers involved. AAs are > _completely_ different from dynamic and static arrays. Aside from the fact > that > they both have array in their name and both allow indexing of a sort, there's > really no relation between them at all.
Yet, one could imagine an associative array with a fixed size and fixed indexes, with no pointers. We could define a simple structure with a static array to store the data and methods to find the element associated with a key. But we could not use this structure in place of a classic associative array (for that we would need pointers obviously).
