On Friday, 8 January 2021 at 03:22:49 UTC, Jack wrote:

tedius, imo. Now, if I went to use filter, could I remove that item and somewhat get an array back, without perform a new array allocation? currently i'm with this, that as far i know, does perform memory allocation by array() call:

arr = arr.filter!(x => x != value).array;

See std.algorithm.mutation.remove. One overload takes an offset, but the other takes a predicate. Example from the docs:

```
static immutable base = [1, 2, 3, 2, 4, 2, 5, 2];

int[] arr = base[].dup;

// using a string-based predicate
writeln(remove!("a == 2")(arr)); // [1, 3, 4, 5]

// The original array contents have been modified,
// so we need to reset it to its original state.
// The length is unmodified however.
arr[] = base[];

// using a lambda predicate
writeln(remove!(a => a == 2)(arr)); // [1, 3, 4, 5]
```


Reply via email to