Removing elements from dynamic arrays?
Steven Schveighoffer
schveiguy at gmail.com
Wed Apr 6 19:28:53 UTC 2022
On 4/6/22 2:32 PM, Salih Dincer wrote:
> On Wednesday, 6 April 2022 at 16:54:26 UTC, Steven Schveighoffer wrote:
>>
>> This is almost equivalent, but it requires a lambda and an allocation.
>> So I'm not sure what thing you are trying to do here.
>
> **Source Code:**
> https://forum.dlang.org/post/pxkhngxmqgiwwymmgoyh@forum.dlang.org
>
> Actually, I wrote this before, with a few magic touches, I got what I
> wanted.
I'm not sure what your code there is trying to do exactly.
What I meant with my comment above is this:
With `arr.find!(someLambda)`, if the lambda is using data from outside
the lambda, it needs a closure, which means it may (probably does)
allocate your needed data into a GC heap block that will then become
garbage after the function is gone.
With `arr.find(value)`, it searches the array for something that
compares with the value. No allocation happens, and it's equivalent to
what you would write in a for loop.
Especially for the code in question:
```d
arr.find(val); // like a for loop, comparing each element to val
arr.find!(v => v == val); // requires a context pointer for val, may
allocate.
```
There is no difference functionally -- both perform exactly the same
task, but one is just more expensive.
-Steve
More information about the Digitalmars-d-learn
mailing list