associative arrays: iteration is finally here
Denis Koroskin
2korden at gmail.com
Wed Oct 28 17:14:01 PDT 2009
On Thu, 29 Oct 2009 03:08:34 +0300, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> 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
Well, my extended test case looks something up, manipulates the found
value, and then possibly removes it.
More information about the Digitalmars-d
mailing list