removing an item from a dynamic array

Graham Fawcett fawcett at uwindsor.ca
Tue Oct 25 11:38:32 PDT 2011


On Tue, 25 Oct 2011 13:11:20 -0400, bearophile wrote:

> Dmitry Olshansky:
> 
>> No, it's not a bug. It's the same as c++ STL remove - it operates on
>> range but not on container. To shrink container, update it's length.
> 
> Thank you for your answer, I didn't know this, and I didn't think about
> this possibility because it's weird, it's an in-place operation that
> modifies the data only partially, leaving it in a wrong state. It looks
> like a bad design, bug prone-too. The design of Python del is better.
> (Maybe I'll have to bring this in the main D newsgroup too, because
> Phobos bug reports often get unnoticed). In the meantime I'll add a
> wrapper function to dlibs2.

I think I'd like to see std.array.replaceInPlace grow a three-parameter 
version, so you could write:

  replaceInPlace(arr, f, t);	// del arr[f:t]

...instead of:

  replaceInPlace(arr, f, t, cast(typeof(arr)) []);

...and skip the pointless allocation of the empty array.

Graham



More information about the Digitalmars-d-learn mailing list