removing an item from a dynamic array

bearophile bearophileHUGS at lycos.com
Tue Oct 25 02:51:25 PDT 2011


maarten van damme:

> import std.algorithm;
> struct Loc {
> uint row;
> uint col;
> }
> void main(){
> Loc[] testArray;
> Loc a={3,2};
> Loc b={5,3};
> testArray~=a;
> testArray~=b;
> remove(testArray,a);
> }
> gives the same error

The second argument of remove() needs to be an index, a size_t.

This works:

import std.stdio, std.algorithm;
struct Loc {
    uint row, col;
}
void main() {
    auto a = Loc(3, 2),
         b = Loc(5, 3);
    auto data = [a, b];
    writeln(remove(data, 0));
    writeln(data);
}


It prints:
[Loc(5, 3)]
[Loc(5, 3), Loc(5, 3)]

So curiously remove() doesn't work in-place, I think this is a bug or a design bug.

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list