Equivilent of STL Set in D ? ...

KlausO oberhofer at users.sourceforge.net
Sun Oct 22 14:21:38 PDT 2006

KlausO wrote:
> Seems to be an interesting task to get used to the new foreach
> features. I'll give it a try.
> Klaus

Ok, I rewrote the intrusive version to a nonintrusive one.
It has almost the interface you mentioned.

Please note: IMHO, there are some points where the template
needs some refinement.

1. A third template parameter "bool duplicatesAllowed" should be
    added and handled in insert/remove via "static if". Then you
    have multisets at hand !

2. Sometimes it exposes an interface to the internally used nodes
    to be able to access the key/value pairs. A special iterator
    class which could encapsulate the "not found/not inserted"
    state would be better.

3. The insert via opIndexAssign/find via opIndex is IMHO not
    optimal because you could not return the "not found/not inserted"
    state. There are some possibilities to resolve this:

     a) Throw an exception (IMHO, ugly)
     b) Return an empty node
     c) ... any ideas ?

    Using insert like
      if (foo.insert("Jill", 13))
    looks better to me.

Ok, thats it for now. Maybe I find some spare time next week
to adress some of the issues.


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: redblacktree.d
Url: http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20061022/b051e15e/attachment.diff 

More information about the Digitalmars-d-learn mailing list