Create array from range

Ali Çehreli acehreli at yahoo.com
Sun Oct 10 03:04:57 UTC 2021


On 10/9/21 4:58 PM, Greg Strong wrote:
> How do I filter some elements of an array into a new array?  

This doesn't answer your specific question but std.algorithm.remove may 
be usable in some cases:

   https://dlang.org/phobos/std_algorithm_mutation.html#remove

If it matters, the following solution does not allocate new memory.

import std.stdio;
import std.algorithm;

void main() {
   auto arr = [ 1, 2, 3, 4, 5, 6, 7 ];

   // The default strategy is SwapStrategy.stable
   arr = arr.remove!(a => a % 2, SwapStrategy.unstable);

   writeln(arr);
}

The original array is modified. SwapStrategy.unstable will shuffle 
elements around. The program prints

[6, 2, 4]

Ali


More information about the Digitalmars-d-learn mailing list