std.algorithm.remove strange behavior (removing items for the dynamic array)

mezozoysky neferegio at gmail.com
Thu May 10 19:47:46 PDT 2012


I almost forgot:
i'm using DMD 2.059 on Debian testing (AMD64).

On Friday, 11 May 2012 at 02:45:20 UTC, mezozoysky wrote:
> Hello!
> I'm noticed that something non-obvious is happening with my 
> code today and i've found that the trouble somewhere close to 
> the removing items from the dynamic arrays e.i. close to 
> std.algorithm.remove function in this case.
>
> I wrote a little test example using this function:
>
>
> module test.app;
>
> import std.stdio: writefln;
> import std.algorithm;
>
> int main(string[] args) {
>
> 	int[] a = [2, 4, 8, 16, 32, 64, 128];
> 	writefln("a before: %s", a);
> 	a.remove(3);
> 	writefln("a after : %s", a);
> 	a.remove(1);
> 	writefln("a after2: %s", a);
>
> 	return 0;
> }
>
>
> ...and got the following output:
>
>
> a before: [2, 4, 8, 16, 32, 64, 128]
> a after : [2, 4, 8, 32, 64, 128, 128]
> a after2: [2, 8, 32, 64, 128, 128, 128]
>
>
> I'm confused.
> Please tell me is it normal behavior of this function or is it 
> a bug?
> Maybe i'm doing something wrong?
> Maybe i need another "remove" or maybe it's normal to use 
> slicing to remove array's items (like a = a[0..i] ~ [i+1..$]) ?
>
> Thanx for attention.
>
> P.S. I'm sorry if my english confuses you.




More information about the Digitalmars-d-learn mailing list