"Jarrett Billingsley" <jarrett.billings...@gmail.com> wrote in message news:mailman.636.1233678501.22690.digitalmars-d-le...@puremagic.com... > On Tue, Feb 3, 2009 at 10:54 AM, nobody <someb...@somewhere.com> wrote: >> Let's see if I understand memmove.. >> The way it's used here, it copies the tail of an array onto that same >> array, >> only starting one index earlier, thus removing the undesired element? >> Neat. > > Right. > >> However I just realized that order does not matter in the array I'm >> using, >> so I guess I could use something like: >> arr[ind] = arr[$-1]; >> arr.length = arr.length -1; >> Seeing how this only copies once, I'm guessing this is more efficient? > > Way more efficient ;)
Would you also happen to know why the following gives an error? import std.stdio; void main() { int[3][] arr = [ [0,1,2], [3,4,5], [6,7,8], [9,10,11] ]; writefln(arr); arr[1] = arr[$-1]; // main.d(11): Error: cannot assign to static array arr[cast(uint)1] //arr[1][0] = arr[$-1][0]; // I could do it manually like this instead, or with a loop, but that seems rather silly. //arr[1][1] = arr[$-1][1]; //arr[1][2] = arr[$-1][2]; arr.length = arr.length - 1; writefln(arr); }