digitalmars.D.learn - what does array.reverse really does?
- jicman (15/15) Mar 31 2006 I am trying to get rid of the first item of an array, so I am trying to ...
I am trying to get rid of the first item of an array, so I am trying to figure it out what is the best way. Right I I thought of this, char[][] a; a[0] = "a"; a[1] = "b"; a[2] = "c"; a[3] = "d"; so if I want to get rid of the first one, I do a = a.reverse a.length = a.length - 1; a = a.reverse; But now I am thinking that what if the array is huge. So, what does array.reverse really does? thanks, josé
Mar 31 2006
jicman wrote:I am trying to get rid of the first item of an array, so I am trying to figure it out what is the best way. Right I I thought of this, char[][] a; a[0] = "a"; a[1] = "b"; a[2] = "c"; a[3] = "d"; so if I want to get rid of the first one, I do a = a.reverse a.length = a.length - 1; a = a.reverse; But now I am thinking that what if the array is huge. So, what does array.reverse really does? thanks, joséFor one thing, it does it in-place, so you can just "a.reverse;" instead of "a = a.reverse;". For another, to get rid of the first array element, I suggest "a = a[1..$]", which I would expect to be faster. As to your question, I don't really know. Have a look at dmd\src\phobos\internal\adi.d, which has the code.
Mar 31 2006
Deewiant says...jicman wrote:Yeah... This one would be much faster... :-) I had forgotten about this. Gosh, and I even used it a few months back... Read The Great Manual. :-) Thanks.I am trying to get rid of the first item of an array, so I am trying to figure it out what is the best way. Right I I thought of this, char[][] a; a[0] = "a"; a[1] = "b"; a[2] = "c"; a[3] = "d"; so if I want to get rid of the first one, I do a = a.reverse a.length = a.length - 1; a = a.reverse; But now I am thinking that what if the array is huge. So, what does array.reverse really does? thanks, joséFor one thing, it does it in-place, so you can just "a.reverse;" instead of "a = a.reverse;". For another, to get rid of the first array element, I suggest "a = a[1..$]", which I would expect to be faster.As to your question, I don't really know. Have a look at dmd\src\phobos\internal\adi.d, which has the code.
Mar 31 2006
In article <e0jrkd$2ou$1 digitaldaemon.com>, Deewiant says...For another, to get rid of the first array element, I suggest "a = a[1..$]", which I would expect to be faster.watch out for this though int[] a = [1, 2, ..stuff...] int[] b = a; b = b[1..$]; assert(b[0] == a[0]); //fails because only where b points to is changed. somthing like this is needed to change the contents foreach(int i, int j; a[1..$]) b[i] = j;
Mar 31 2006