07.03.2020 15:58, Steven Schveighoffer пишет:

Hm... I'd say:

1. Don't use a pointer for the element. Just use the struct directly. Using a pointer is bad because it's now going to compare pointers, and not the element data. Not only that, but RBNodes are stored as heap-allocated structs, so you are wasting a lot of memory by allocating another heap allocated thing to get stored inside there.

You can use predicate to solve the issue like you suggest below. But I'm totally missed that RBNodes are heap-allocated, thanks!

2. RedBlackTree allows you to identify the relationship that you consider unique by providing a "less" function. Instead of instrumenting your Deb type, which might affect other usages, just do:

RedBlackTree!(Deb, (a, b) => a.name < b.name)
 > No need to add opCmp and opEquals (if that doesn't make sense in other
contexts).

-Steve


Reply via email to