Equivilent of STL Set in D ? ...

clayasaurus clayasaurus at gmail.com
Wed Oct 18 17:41:04 PDT 2006


Sean Kelly wrote:
> clayasaurus wrote:
>> Hello, I am converting some C++ code which happens to use STL Set to 
>> D. I was thinking of ways to implement set in D, but since I never got 
>> much into STL set in C++ I want to make sure I am thinking right.
>>
>> 1) Are D's associative arrays equivalent to STL Set? I've read that 
>> Set is pretty much just a sorted associative array, can this 
>> functionality be achieved in D (using struct as a key type) by 
>> overloading opCmp?
> 
> No.  D's associative array is implemented as a hash table, which is 
> unordered by nature.  If you require the elements to be sorted you'll 
> either have to use a different container or copy the values to an array 
> and sort the array before doing whatever you want to do with the sorted 
> values.  The word count example does this, for example.

Alright, since Set is a sorted associative container, I mistakenly 
thought it had something to do with an associative arrays.

> 
>> 2) I suppose I could implement this as a sorted linked list. As far as 
>> I can tell set is only being used to hold a collection of elements 
>> that are sorted in a certain way.
> 
> The C++ set is implemented as a balanced binary tree, and some sort of 
> binary tree is probably your best bet if you want a sorted container 
> with decent lookup performance.

Thanks for the info, so all I have to do is create a balanced binary 
tree with a foreach iterator? :) Seems simple enough.

~ Clay



More information about the Digitalmars-d-learn mailing list