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 errorThe 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
