Thread overview
std.container.rbtree has no search method?! e.g. `contains`, `canFind`
Jul 13, 2024
mw
Jul 13, 2024
Dennis
Jul 14, 2024
mw
July 13, 2024

Hi,

on doc:

https://dlang.org/phobos/std_container_rbtree.html#.RedBlackTree

I cannot find any search method?! e.g. contains, canFind.

Is this a over look? Or there are such functions else where?

July 13, 2024

On Saturday, 13 July 2024 at 17:41:42 UTC, mw wrote:

>

I cannot find any search method?! e.g. contains, canFind.

Is this a over look? Or there are such functions else where?

It's the in operator:

https://dlang.org/phobos/std_container_rbtree.html#.RedBlackTree.opBinaryRight

But indeed, the documentation can be clearer about that.

July 14, 2024

On Saturday, 13 July 2024 at 17:41:42 UTC, mw wrote:

>

Hi,

on doc:

https://dlang.org/phobos/std_container_rbtree.html#.RedBlackTree

I cannot find any search method?! e.g. contains, canFind.

Is this a over look? Or there are such functions else where?

The functions are called equalRange (which gives you a range of all the elements that compare equal to the parameter), lowerBound (all elements less than the parameter), and upperBound (all elements greater than the parameter).

This was not my choice, my original dcollections implementation used a find function. It was a condition for having the type added to phobos.

-Steve

July 14, 2024

On Sunday, 14 July 2024 at 02:01:44 UTC, Steven Schveighoffer wrote:

>

On Saturday, 13 July 2024 at 17:41:42 UTC, mw wrote:

>

Hi,

on doc:

https://dlang.org/phobos/std_container_rbtree.html#.RedBlackTree

I cannot find any search method?! e.g. contains, canFind.

Is this a over look? Or there are such functions else where?

The functions are called equalRange (which gives you a range of all the elements that compare equal to the parameter), lowerBound (all elements less than the parameter), and upperBound (all elements greater than the parameter).

This was not my choice, my original dcollections implementation used a find function. It was a condition for having the type added to phobos.

-Steve

I think for containers, it's better to have uniform naming convention, either contains, canFind or in, so writing generic code (e.g. via D template) is easier.