How to refer to different sized static arrays
Ali Çehreli
acehreli at yahoo.com
Sat Feb 8 19:58:37 UTC 2020
On 2/8/20 12:22 AM, Adnan wrote:
> Just a foreword, this is for learning purposes, hence I am not using the
> dynamic array or Array!T.
>
> I have a structure that maintains a heap allocated sized array inside.
>
> struct LifoStack(T) {
> T[?] data;
> }
>
> This `data` is manually resized and copied. Thus the size itself is not
> a compile time constant. What should go inside `?` in the the type
> signature of data?
You just leave the parentheses empty:
T[] data;
T[] is internally two things, the equivalent of the following:
size_t length;
T * ptr;
> Also, how can I create runtime-determined sized fixed array in the heap?
To have fixed-size array, you have to somehow spell the size out at
compile time. The closest thing that comes to mind... does not make
sense... :)
T[N] makeStaticArray(T, size_t N)() {
T[N] result;
return result;
}
void main() {
auto arr = makeStaticArray!(int, 42)(); // <-- Must say 42
}
See std.array.staticArray, which is much more useful:
https://dlang.org/phobos/std_array.html#staticArray
But, really, if the size is known at run time, it's a dynamic array. :)
Ali
More information about the Digitalmars-d-learn
mailing list