On Thursday, 17 October 2013 at 18:41:53 UTC, Vitali wrote:
The use case is:

void removeElement(ref int[] arr, int index) {
  arr = arr[0..index] ~ arr[index+1..$];
}

The meaning of this code is: Create a new array out of composing two slices and assign it to arr. Of course, there is allocation happening.

What you probably want is: Move arr elements index+1..$ to index..$-1 and decrease length by one, preserving capacity. You can use std.algorithm.remove, which does move part. Hence:

import std.algorithm: remove;
void removeElement(ref int[] arr, int index) {
  remove(arr,index);
  arr.length--;
}

Reply via email to