Address of an element of AA

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 2 11:35:31 PDT 2016


On 4/2/16 10:22 AM, Temtaime wrote:
> Hi !
> I can't find this in specs.
>
> If i add an element to AA:
> aa[10] = 123;
>
> Will &aa[10] be always the same (of course i don't remove that key) ?
>
> Thanks for a reply.
> I think specs should be enhanced.

Depends on your definition of "always". As long as you don't add or 
remove keys, it will remain at the same place. Adding other keys can 
cause a rehash, and removing keys (even if it isn't that one) can cause 
a rehash.

Note: in the current implementation, it WILL remain in the same 
location, even on a rehash. This is because the AA is implemented as an 
array of pointers to elements. A rehash does not reallocate the 
elements. But this is NOT guaranteed to stay this way in the future.

Note: reason the spec does not say this is because we don't want to 
constrain the implementation to behave a certain way.

-Steve


More information about the Digitalmars-d-learn mailing list