associative arrays: iteration is finally here
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Wed Oct 28 17:08:34 PDT 2009
Denis Koroskin wrote:
> On Wed, 28 Oct 2009 23:18:08 +0300, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org> wrote:
>
>>> I'd also like you to add a few things in an AA interface.
>>> First, opIn should not return a pointer to Value, but a pointer to a
>>> pair of Key and Value, if possible (i.e. if this change won't
>>> sacrifice performance).
>>
>> I'm coy about adding that because it forces the implementation to hold
>> keys and values next to each other. I think that was a minor mistake
>> of STL - there's too much exposure of layout details.
>>
>
> It doesn't have to be the case: key and value are both properties (i.e.
> methods), and they doesn't have to be located next to each other.
I see. So you want a pointer to an elaborate type featuring a key and a
value.
>>> Second, AA.remove method should accept result of opIn operation to
>>> avoid an additional lookup for removal:
>>> if (auto value = key in aa) {
>>> aa.remove(key); // an unnecessary lookup
>>> }
>>
>> I'll make aa.remove(key) always work and return a bool that tells you
>> whether there was a mapping or not.
>>
>
> Err... How does it solve the double lookup problem?
Your test looks something up and then removes it.
Andrei
More information about the Digitalmars-d
mailing list