A slice consisting of non-consecutive elements of an array?

vit vit at vit.vit
Wed Jan 12 06:58:47 UTC 2022


On Wednesday, 12 January 2022 at 06:43:40 UTC, forkit wrote:
> On Wednesday, 12 January 2022 at 06:16:49 UTC, vit wrote:
>>
>> Yes std.algorithm : filter.
>>
>> ```d
>> import std.stdio : writeln;
>> import std.algorithm : filter;
>>
>>     void main()@safe{
>>         auto a = ["one", "one", "two", "one", "two", "one", 
>> "one", "two"];
>>
>>     	writeln(a);
>>     	writeln(a.filter!(x => x == "one"));
>>     }
>>     ```
>
> Interesting. I looked it up.. it says "returns a new range..."
>
> Does that mean what I think it means (i.e. a new allocation 
> takes place) ?

No, it is only view to old slice:
```d
void main()@safe{
     auto a = ["one", "one", "two", "one", "two", "one", "one", 
"two"];

     auto b = (()@nogc => a.filter!(x => x == "one"))();
     writeln(a);
     writeln(b);
}
```


More information about the Digitalmars-d-learn mailing list