Re: std.algorithm.remove using SwapStrategy.unstable doesn't works

2010-11-16 Thread Aleksandar Ružičić
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

2010-11-16 Thread 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

2010-11-16 Thread Andrei Alexandrescu

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

2010-11-16 Thread Aleksandar Ružičić
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