On 10/26/2011 12:25 PM, bearophile wrote:
Timon Gehr:

A dynamic array of pointers to fixed size arrays is this:
T[N]*[] arr;
What would you wrap exactly?

How do you allocate those T[N] in D?

int[N]* x = (new int[N][1]).ptr;


I don't like that either.



Do you know how this implementation compares to a circular buffer
implementation? I'd have expected that to be faster.

A circular buffer is faster in some situations, when you on average need a 
constant number of items in your data structure. But a circular buffer needs 
lot of time to change its size a lot, because you have to halve or double it 
once in a while. Generally, if you don't know much about how your queue will be 
used, a dynamic array of chunks is better (some people use a linked list of 
chunks, but this makes it worse to access items randomly, and the time saved 
not managing a growable circular queue of the chunk pointers is not much, 
because the chunks usually contain hundreds of items or more).


Ok, I see, thanks. In my specific application of a queue buffer, the number of items is constant on average, except for some extreme border cases.


Reply via email to