Pointers or copies?
    Frits van Bommel 
    fvbommel at REMwOVExCAPSs.nl
       
    Thu Dec 21 07:26:56 PST 2006
    
    
  
Chris Nicholson-Sauls wrote:
> void drop (T) (inout T[] haystack, size_t index)
> in {
>   assert(index < haystack.length, ".drop() called with index greater 
> than array length");
> }
> body {
>   if (index != haystack.length - 1) {
>     memmove(&(haystack[index]), &(haystack[index + 1]), T.sizeof * 
> (haystack.length - index));
>   }
>   haystack.length = haystack.length - 1;
> }
Doesn't that move one element from beyond the end of the array?
Array [0, 1, 2], drop element at index 1:
	memmove(&(array[1]), &(array[2]), int.sizeof * (3-1));
Moves 2 elements, starting at the 3rd element (element at index 2) of a 
3-element array...
    
    
More information about the Digitalmars-d
mailing list