associative arrays: iteration is finally here

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Oct 29 08:39:10 PDT 2009


Leandro Lucarella wrote:
> Andrei Alexandrescu, el 28 de octubre a las 20:29 me escribiste:
>>>> 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.
>> Ok, I understand your points, thanks for explaining.
> 
> What about and overload of remove() like this:
> bool remove(in T key, out U value);
> 
> If the element was present, it's returned in "value", so you can
> manipulate it. I thought about just returning a pointer:
> U* remove(in T key);
> 
> But I guess that pointer would point to the element stored in the the AA
> private data, but that element was just removed, so bad things would
> happen, that's why the only option is to copy the data, right?

I think this all is overdoing it. First, I disagree that remove should 
ever throw an exception. It's not a code that the user is supposed to 
check (with dire consequences if she doesn't), it's just additional 
information just in case you need it.

I think bool remove(key) is better than all other designs suggested so far.


Andrei



More information about the Digitalmars-d mailing list