Re: std.algorithm.remove using SwapStrategy.unstable doesn't works
filed as Issue #5224 - http://d.puremagic.com/issues/show_bug.cgi?id=5224 regards, Aleksandar 2010/11/16 Aleksandar Ružičić : > No problem, just to isolate the code and to confirm it's not something > to other parts of my code (but I'm pretty sure it's not). > > On Tue, Nov 16, 2010 at 7:03 PM, Andrei Alexandrescu > wrote: >> On 11/16/10 4:24 AM, Aleksandar Ružičić wrote: >>> >>> I'm trying to use remove() from std.algorithm to remove item from an >>> array and when I tried to use SwapStrategy.unstable (as I don't need >>> to maintain order of items in array and I want to optimize where ever >>> I can) I came to surprising results. In the example below one would >>> expect that item at index 2 (number 3 in example) will be removed but >>> instead item at index 0 is removed from array. >>> >>> Is this a bug or I'm missing a point? >>> >>> - >>> >>> import std.stdio, std.algorithm; >>> >>> void main(string[] args) { >>> >>> auto a = [1,2,3,4]; >>> >>> foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 1 2 >>> 3 4 (4) >>> >>> auto i = a.indexOf(3); >>> >>> writefln("%s", i); // 2 >>> >>> if (i> -1) { >>> a = remove!(SwapStrategy.unstable)(a, i); >>> } >>> >>> foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 4 2 >>> 3 (3) !?! >>> } >>> >>> - >>> >>> thx in advance, >>> Aleksandar >> >> Looks like a bug. Could you please file it to bugzilla? >> >> Thanks, >> >> Andrei >> >
Re: std.algorithm.remove using SwapStrategy.unstable doesn't works
No problem, just to isolate the code and to confirm it's not something to other parts of my code (but I'm pretty sure it's not). On Tue, Nov 16, 2010 at 7:03 PM, Andrei Alexandrescu wrote: > On 11/16/10 4:24 AM, Aleksandar Ružičić wrote: >> >> I'm trying to use remove() from std.algorithm to remove item from an >> array and when I tried to use SwapStrategy.unstable (as I don't need >> to maintain order of items in array and I want to optimize where ever >> I can) I came to surprising results. In the example below one would >> expect that item at index 2 (number 3 in example) will be removed but >> instead item at index 0 is removed from array. >> >> Is this a bug or I'm missing a point? >> >> - >> >> import std.stdio, std.algorithm; >> >> void main(string[] args) { >> >> auto a = [1,2,3,4]; >> >> foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 1 2 >> 3 4 (4) >> >> auto i = a.indexOf(3); >> >> writefln("%s", i); // 2 >> >> if (i> -1) { >> a = remove!(SwapStrategy.unstable)(a, i); >> } >> >> foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 4 2 >> 3 (3) !?! >> } >> >> - >> >> thx in advance, >> Aleksandar > > Looks like a bug. Could you please file it to bugzilla? > > Thanks, > > Andrei >
Re: std.algorithm.remove using SwapStrategy.unstable doesn't works
On 11/16/10 4:24 AM, Aleksandar Ružičić wrote: I'm trying to use remove() from std.algorithm to remove item from an array and when I tried to use SwapStrategy.unstable (as I don't need to maintain order of items in array and I want to optimize where ever I can) I came to surprising results. In the example below one would expect that item at index 2 (number 3 in example) will be removed but instead item at index 0 is removed from array. Is this a bug or I'm missing a point? - import std.stdio, std.algorithm; void main(string[] args) { auto a = [1,2,3,4]; foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 1 2 3 4 (4) auto i = a.indexOf(3); writefln("%s", i);// 2 if (i> -1) { a = remove!(SwapStrategy.unstable)(a, i); } foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 4 2 3 (3) !?! } - thx in advance, Aleksandar Looks like a bug. Could you please file it to bugzilla? Thanks, Andrei
std.algorithm.remove using SwapStrategy.unstable doesn't works
I'm trying to use remove() from std.algorithm to remove item from an array and when I tried to use SwapStrategy.unstable (as I don't need to maintain order of items in array and I want to optimize where ever I can) I came to surprising results. In the example below one would expect that item at index 2 (number 3 in example) will be removed but instead item at index 0 is removed from array. Is this a bug or I'm missing a point? - import std.stdio, std.algorithm; void main(string[] args) { auto a = [1,2,3,4]; foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 1 2 3 4 (4) auto i = a.indexOf(3); writefln("%s", i); // 2 if (i > -1) { a = remove!(SwapStrategy.unstable)(a, i); } foreach (e; a) writef("%s ", e); writefln("(%s)", a.length); // 4 2 3 (3) !?! } - thx in advance, Aleksandar