On 03/29/2011 11:43 PM, Andrej Mitrovic wrote:
A use case for this could be a file system search:

     void[string] names;  // unique names to find
     string[] results;

     foreach (string name; dirEntries(curdir, SpanMode.deep))
     {
         if (name.basename in names)
             results ~= name;
     }

With string arrays the `if` check might slow things down.

There are tons of use cases for sets. Unfortunately, implementation (either as hashed collections or binary trees) is far more complicated than for sequential collections (array, list). Especially, it highly depends on the element type. Thus, sets are rarely a builtin type. For this reason, probably, people often wrongly use arrays/lists where sets are appropriate. This means, mainly, where the primary operation is a test of membership/containment. (Also set operations like set equality, union, intersection...) The pseudo-value trick you used stil a good one: people often build sets from AAs with a value of true for each key/element (thus, set[x] returns true if x is present in set -- but this works only in implementations where absence of x does not throw).

Denis
--
_________________
vita es estrany
spir.wikidot.com

Reply via email to