On Mon, 16 Nov 2009 02:07:47 -0500, Denis Koroskin <[email protected]> wrote:

On Mon, 16 Nov 2009 02:16:09 +0300, Steven Schveighoffer <[email protected]> wrote:

On Sun, 15 Nov 2009 15:53:08 -0500, BLS <[email protected]> wrote:



==
Now : Sorry for my ignorance ... but Why the heck :

struct RBNode(V)

instead of :

struct RBNode(K, V)


It was my way of providing the exact same implementation for TreeMap, TreeSet, and TreeMultiSet (same deal between HashMap and HashSet, and HashMultiSet). TreeSet and TreeMultiSet have no keys,

I'd say it has no values but keys.

You could look at it that way, but I think it would be just as awkward to declare RBNode(K, V) using RBNode!(V, void) and do some weird static-if stuff for sets.


so the basic difference between them is the comparator function for TreeMap (which is passed in by the class to the impl) compares only the keys.


That's the key! Maybe I'm missing something, but when do you need to compare values?

In TreeSet. There are no keys, only values. Or you could say, the keys are the values. From the point of view of RBNode, it doesn't care, it just uses the comparator function given to it.

-Steve

Reply via email to