Sets / associative arrays with void values?

Chris Nicholson-Sauls ibisbasenji at gmail.com
Sat Jan 6 23:10:24 PST 2007


Jeff M wrote:
> On 2007-01-06 16:05:06 -0800, "Vladimir Panteleev" 
> <tehcybershadow at gmail.com> said:
> 
>> I've been wondering whether D supported sets, or something similar. 
>> What I  have in mind isn't unlike associative arrays, but without 
>> values: an  unordered list with quick look-up and simple 
>> addition/removal of elements,  yet still capable of enumeration, etc.
>>
>> I followed my intuition and tried to declare an associative array with 
>> a  "void" value type:
>>
>> void[int] foo;
>>
>> To my surprise, it compiled. And even the "in" operation and the .keys 
>> and  .values properties worked fine (or as fine as they can work with 
>> an empty  associative array).
>>
>> Of course, the question comes: how would one add keys to such a 
>> construct?  The practical answer is obvious: use a real "dummy" data 
>> type (bit, for  example) as the value type, but I find it a shame that 
>> declaring such  constructs is allowed - yet you can't really use them.
> 
> It would be nice if a "void[int]" array was usable. Associative arrays 
> are create-on-access, so "foo[5];" should be a legal for creating an 
> index in the array, but this throws an error.
> 
> -- Jeff
> 

Actually I'm pretty sure create-on-access was removed several releases back?  And I also 
thought the compiler no longer allowed a void value type for associative arrays, but I 
guess I was wrong on that one.

-- Chris Nicholson-Sauls



More information about the Digitalmars-d mailing list