On 25.10.2011 13:51, bearophile wrote:
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
No, it's not a bug. It's the same as c++ STL remove - it operates on
range but not on container. To shrink container, update it's length.
--
Dmitry Olshansky