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);
}
```

Reply via email to