Jump to page: 1 2
Thread overview
TreeSet
Aug 02, 2008
Toki
Aug 02, 2008
Moritz Warning
Aug 02, 2008
Moritz Warning
Aug 02, 2008
Benji Smith
Aug 02, 2008
Toki
Aug 02, 2008
Koroskin Denis
Aug 03, 2008
toki
Aug 03, 2008
Koroskin Denis
August 02, 2008
Hi,
I want to port my Java app to D.
Is there sometinhg like a TreeSet in D?

Best Regards
Thorsten
August 02, 2008
On Sat, 02 Aug 2008 09:06:42 -0400, Toki wrote:

> Hi,
> I want to port my Java app to D.
> Is there sometinhg like a TreeSet in D?
> 
> Best Regards
> Thorsten
You can use an associative array with a boolean dummy key, e.g.: uint[bool] myset;

or you can use the Tango library, it has tango.util.container.HashSet.
August 02, 2008
On Sat, 02 Aug 2008 17:26:34 +0000, Moritz Warning wrote:

> On Sat, 02 Aug 2008 09:06:42 -0400, Toki wrote:
> 
>> Hi,
>> I want to port my Java app to D.
>> Is there sometinhg like a TreeSet in D?
>> 
>> Best Regards
>> Thorsten
sorry I meant you can use an associative array with a boolean dummy
value, e.g.:
bool[uint] myset;


August 02, 2008
> sorry I meant you can use an associative array with a boolean dummy value, e.g.:
> bool[uint] myset;

It's not *quite* the same.

A java TreeSet<T> uses a red-black tree implementation rather than a hashtable implementation (like the java HashSet<T> class). Consequently, a TreeSet<T>.ValueIterator will always iterate the values in their natural ordering, whereas a HashSet<T>.ValueIterator makes no guarantees about its iteration ordering.

I don't know whether Tango provides any equivalent containers. Tango definitely has TreeMap and TreeBag implementations, but there doesn't seem to be a TreeSet.

http://dsource.org/projects/tango/docs/current/

Someone with more Tango expertise could probably clarify...

--benji
August 02, 2008
Benji Smith Wrote:

> > sorry I meant you can use an associative array with a boolean dummy
> > value, e.g.:
> > bool[uint] myset;
> 
> It's not *quite* the same.
> 
> A java TreeSet<T> uses a red-black tree implementation rather than a hashtable implementation (like the java HashSet<T> class). Consequently, a TreeSet<T>.ValueIterator will always iterate the values in their natural ordering, whereas a HashSet<T>.ValueIterator makes no guarantees about its iteration ordering.
> 
> I don't know whether Tango provides any equivalent containers. Tango definitely has TreeMap and TreeBag implementations, but there doesn't seem to be a TreeSet.
> 
> http://dsource.org/projects/tango/docs/current/
> 
> Someone with more Tango expertise could probably clarify...
> 
> --benji

Thnak you,
that's what I was looking for.
But the next question: is tango available for dmd, or only for gdc ?

-Toki
August 02, 2008
On Sun, 03 Aug 2008 03:00:35 +0400, Toki <thorstenkiefer@gmx.de> wrote:

> Benji Smith Wrote:
>
>> > sorry I meant you can use an associative array with a boolean dummy
>> > value, e.g.:
>> > bool[uint] myset;
>>
>> It's not *quite* the same.
>>
>> A java TreeSet<T> uses a red-black tree implementation rather than a
>> hashtable implementation (like the java HashSet<T> class). Consequently,
>> a TreeSet<T>.ValueIterator will always iterate the values in their
>> natural ordering, whereas a HashSet<T>.ValueIterator makes no guarantees
>> about its iteration ordering.
>>
>> I don't know whether Tango provides any equivalent containers. Tango
>> definitely has TreeMap and TreeBag implementations, but there doesn't
>> seem to be a TreeSet.
>>
>> http://dsource.org/projects/tango/docs/current/
>>
>> Someone with more Tango expertise could probably clarify...
>>
>> --benji
>
> Thnak you,
> that's what I was looking for.
> But the next question: is tango available for dmd, or only for gdc ?
>
> -Toki

It is available for both.
August 03, 2008
"Toki" wrote
> Hi,
> I want to port my Java app to D.
> Is there sometinhg like a TreeSet in D?

I highly recommend Tango's new containers, as they offer the best performance.  But if you have to stick with the default D library (Phobos), consider dcollections:  http://www.dsource.org/projects/dcollections

-Steve


August 03, 2008
Steven Schveighoffer Wrote:

> "Toki" wrote
> > Hi,
> > I want to port my Java app to D.
> > Is there sometinhg like a TreeSet in D?
> 
> I highly recommend Tango's new containers, as they offer the best performance.  But if you have to stick with the default D library (Phobos), consider dcollections:  http://www.dsource.org/projects/dcollections
> 
> -Steve
> 
> 

Thank you, dcollections is much easier to install.
But when i compile my program, I gat the following errors :

main.o: In function `_D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
satsolver.d:(.text._D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x1e): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb':
satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb+0x1b): undefined reference to `_D12dcollections6RBTree8__assertFiZv'

-TK
August 03, 2008
On Sun, 03 Aug 2008 18:14:45 +0400, toki <thorstenkiefer@gmx.de> wrote:

> Steven Schveighoffer Wrote:
>
>> "Toki" wrote
>> > Hi,
>> > I want to port my Java app to D.
>> > Is there sometinhg like a TreeSet in D?
>>
>> I highly recommend Tango's new containers, as they offer the best
>> performance.  But if you have to stick with the default D library (Phobos),
>> consider dcollections:  http://www.dsource.org/projects/dcollections
>>
>> -Steve
>>
>>
>
> Thank you, dcollections is much easier to install.
> But when i compile my program, I gat the following errors :
>
> main.o: In function `_D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x1e): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb+0x1b): undefined reference to `_D12dcollections6RBTree8__assertFiZv'
>
> -TK

I think you should build dcollections into a library and link with it or include all the dcollection source files into your project.
August 04, 2008
"toki" <thorstenkiefer@gmx.de> wrote in message news:g74egl$2f07$1@digitalmars.com...
> Steven Schveighoffer Wrote:
>
>> "Toki" wrote
>> > Hi,
>> > I want to port my Java app to D.
>> > Is there sometinhg like a TreeSet in D?
>>
>> I highly recommend Tango's new containers, as they offer the best
>> performance.  But if you have to stick with the default D library
>> (Phobos),
>> consider dcollections:  http://www.dsource.org/projects/dcollections
>>
>> -Steve
>>
>>
>
> Thank you, dcollections is much easier to install.
> But when i compile my program, I gat the following errors :
>
> main.o: In function
> `_D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBTreeTiZ6RBTree6removeMFC12dcollections6RBTree13__T6RBNodeTiZ6RBNodeZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x1e):
> undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function
> `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateRMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17):
> undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function
> `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode7rotateLMFZC12dcollections6RBTree13__T6RBNodeTiZ6RBNode+0x17):
> undefined reference to `_D12dcollections6RBTree8__assertFiZv'
> main.o: In function
> `_D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb':
> satsolver.d:(.text._D12dcollections6RBTree13__T6RBNodeTiZ6RBNode10isLeftNodeMFZb+0x1b):
> undefined reference to `_D12dcollections6RBTree8__assertFiZv'
>
> -TK

Sorry about that.  The reason is because dcollections is not built as a library, so you must actually compile the dcollections modules in addition to your modules.  Or make it a library.  I probably should do this...

What I do when using dcollections is:

dmd mymodule1.d mymodule2.d path/to/dcollections/*.d

You don't have to build the model directory.  Note that the above might add more size to your executable than you need, but it's easy to type.  If you just want TreeSet, compile RBTree.d, TreeSet.d, (and if you used the svn trunk, DefaultAllocator.d).

-Steve


« First   ‹ Prev
1 2