Straight Forward Arrays

dhs dhs at email.com
Sun Oct 1 09:01:53 UTC 2023


Hi,

Is there a straight forward Array type in D similar to C++'s 
vector class? Something along the lines of the tuple: (pointer to 
elements, length, capacity).

I tried two implementations: D's dynamic array and 
std.container.array.

When D creates a dynamic array, it returns a slice. Functions 
that add or remove elements begin by asking the memory manager 
for the dynamic array that the slice belongs to. Only then can 
they go on and add elements.

I switched to std.container.array. It is more straight forward, 
but is also reference counted. Array is basically a pointer to 
the tuple (pointer to elements, length, capacity, refCount). 
Functions that add or remove elements begin by checking that the 
Array is not null, follow the pointer to the actual tuple, then 
follow the "pointer to elements" to access the actual elements. 
In C++, this is similar to shared_ptr\<vector>. The documentation 
does not mention nor explain why. Can someone explain? Is there a 
simpler, more efficient alternative?

Thanks in Advance,
dhs


More information about the Digitalmars-d-learn mailing list