std.algorithm.remove strange behavior (removing items for the dynamic array)
mezozoysky
neferegio at gmail.com
Thu May 10 19:45:18 PDT 2012
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