Array Design Idea

Robert Fraser fraserofthenight at gmail.com
Mon Dec 10 12:51:01 PST 2007


Craig Black wrote:
> I know that there has been discussion about the possibility of changing 
> arrays to use two pointers insead of a pointer and a size.  Since this idea 
> seems to be on the table, I though I would share another related idea.  I 
> have written my own array template class in C++ a long while ago and I 
> thought I would share my design because it has worked well for me and is 
> quite efficient.
> 
> There are three things that need to be stored for a resizable array:  the 
> pointer to the array, the size, and the capacity.  My array implementation, 
> both the size and the capacity are stored on the heap with the array.  There 
> is only one heap allocation, and the first 8 bytes are reserved for the size 
> and capacity values.  Further, there is no heap allocation if the array is 
> empty.  If the array is empty, then the pointer is null, and the array is 
> assumed to have a size and capacity of zero, so there is no need to store 
> the size or capacity of an empty array.
> 
> This means that an empty array is just a null pointer.  This is beneficial 
> for my purposes because arrays are used a lot in my code, and about half of 
> them end up being empty.  So storing an empty array efficiently is a good 
> thing.  I have been using this system for a long time and haven't had any 
> problems with it.
> 
> -Craig 
> 
> 

If you're looking for super-fast dynamic arrays... 
http://judy.sourceforge.net/



More information about the Digitalmars-d mailing list