digitalmars.D - double-ended queue (deque)
- Ben Hinkle (9/9) May 03 2004 For those who can't wait for DTL, or for those who just need a simple
- Jan-Eric Duden (9/18) May 04 2004 Shouldn't the capacity of the deque grow exponentially?
- Jan-Eric Duden (9/30) May 04 2004 Never mind... the code actually does it...
- Ben Hinkle (11/13) May 04 2004 The scary part is I had a version that was a lot messier and decided to ...
- Jan-Eric Duden (8/21) May 04 2004 tries
- Matthew (5/30) May 04 2004 You need have no worries there. I've been fighting "flavours" of STL for...
- Eric Anderton (6/8) May 04 2004 This is a bit off topic, but I once found myself chasing a compile error...
For those who can't wait for DTL, or for those who just need a simple double-ended queue, I've put a deque.d at http://home.comcast.net/~benhinkle/deque.d It is implemented as a single dynamic array so slicing and manipulating it like an array is very easy and "D-like". I figured no iterator is needed for it. The resizing algorithm is the messiest part but right now it is pretty simple. I looked around on the web a little before making it so apologies someone already wrote a deque and I missed it. Feedback welcome. -Ben
May 03 2004
Shouldn't the capacity of the deque grow exponentially? Right now, complexity of adding elements is O(n) where n is the size of the deque. (because of the copying) If the capacity of deque grows exponentially it is only O(log n). AFAIK the STL does the same. -- Jan-Eric Duden "Ben Hinkle" <bhinkle4 juno.com> wrote in message news:c770lv$1cbm$1 digitaldaemon.com...For those who can't wait for DTL, or for those who just need a simple double-ended queue, I've put a deque.d at http://home.comcast.net/~benhinkle/deque.d It is implemented as a single dynamic array so slicing and manipulating it like an array is very easy and "D-like". I figured no iterator is needed for it. The resizing algorithm is the messiest part but right now it is pretty simple. I looked around on the web a little before making it so apologies someone already wrote a deque and I missed it. Feedback welcome. -Ben
May 04 2004
Never mind... the code actually does it... The ensure_size function is really messy. ;) -- Jan-Eric Duden "Jan-Eric Duden" <jeduden whisset.com> wrote in message news:c77hm4$26dd$1 digitaldaemon.com...Shouldn't the capacity of the deque grow exponentially? Right now, complexity of adding elements is O(n) where n is the size ofthedeque. (because of the copying) If the capacity of deque grows exponentially it is only O(log n). AFAIK the STL does the same. -- Jan-Eric Duden "Ben Hinkle" <bhinkle4 juno.com> wrote in message news:c770lv$1cbm$1 digitaldaemon.com...itFor those who can't wait for DTL, or for those who just need a simple double-ended queue, I've put a deque.d at http://home.comcast.net/~benhinkle/deque.d It is implemented as a single dynamic array so slicing and manipulatingwelcome.like an array is very easy and "D-like". I figured no iterator is needed for it. The resizing algorithm is the messiest part but right now it is pretty simple. I looked around on the web a little before making it so apologies someone already wrote a deque and I missed it. Feedback-Ben
May 04 2004
Jan-Eric Duden wrote:Never mind... the code actually does it... The ensure_size function is really messy. ;)The scary part is I had a version that was a lot messier and decided to go with the "simple" version. It checks if there is already enough space and slop if there is it centers the data without reallocating and otherwise it reallocates. Plus whenever it reallocates it recenters the data when copying the data to the new array. The scary version was the one that tries to copy the data more to one side or the other depending on which end is growing faster and by how much (assuming past trends predict future trends). I've never looked at what STL impls do - well, ok, I've opened up the files but talk about a mess ;-)
May 04 2004
"Ben Hinkle" <bhinkle4 juno.com> wrote in message news:c781a6$2t5j$1 digitaldaemon.com...Jan-Eric Duden wrote:triesNever mind... the code actually does it... The ensure_size function is really messy. ;)The scary part is I had a version that was a lot messier and decided to go with the "simple" version. It checks if there is already enough space and slop if there is it centers the data without reallocating and otherwise it reallocates. Plus whenever it reallocates it recenters the data when copying the data to the new array. The scary version was the one thatto copy the data more to one side or the other depending on which end is growing faster and by how much (assuming past trends predict future trends).Good descision. Now, it's almost obvious what it does. :)I've never looked at what STL impls do - well, ok, I've opened up thefilesbut talk about a mess ;-)I never understood, how the authors of the STL can actually understand their code and keep it bug free. I hope the authors of the DTL will produce nice code. :)
May 04 2004
"Jan-Eric Duden" <jeduden whisset.com> wrote in message news:c78cnc$cro$1 digitaldaemon.com..."Ben Hinkle" <bhinkle4 juno.com> wrote in message news:c781a6$2t5j$1 digitaldaemon.com...You need have no worries there. I've been fighting "flavours" of STL for years. I don't intend to inflict the same degree of pain on DTL users/maintainers/enhancersJan-Eric Duden wrote:triesNever mind... the code actually does it... The ensure_size function is really messy. ;)The scary part is I had a version that was a lot messier and decided to go with the "simple" version. It checks if there is already enough space and slop if there is it centers the data without reallocating and otherwise it reallocates. Plus whenever it reallocates it recenters the data when copying the data to the new array. The scary version was the one thatto copy the data more to one side or the other depending on which end is growing faster and by how much (assuming past trends predict future trends).Good descision. Now, it's almost obvious what it does. :)I've never looked at what STL impls do - well, ok, I've opened up thefilesbut talk about a mess ;-)I never understood, how the authors of the STL can actually understand their code and keep it bug free. I hope the authors of the DTL will produce nice code. :)
May 04 2004
I've never looked at what STL impls do - well, ok, I've opened up the files but talk about a mess ;-)This is a bit off topic, but I once found myself chasing a compile error through hundreds of lines of STL code. I was somwhere between pulling my hair out in frustration and going blind from the unmaintainable mess it was when I found out what was wrong: the Visual Studio 6 compiler has the world's most hoplessly broken template implementation. Thank goodness for D with built in arrays and gc.
May 04 2004