Dynamic array void initialization

Ali Çehreli acehreli at yahoo.com
Tue Mar 8 13:53:08 PST 2011


On 03/08/2011 01:34 PM, Tom wrote:
> import std.stdio;
>
> struct S {
> int i;
> int j;
> }
>
> int main(string[] args) {
> S[] ss = void;
> ss.length = 5;
> foreach (ref s; ss)
> s = S(1, 2);
> return 0;
> }
>
> Is the above code correct? (it doesn't work... it blows away or just
> give and access violation error).
>
> I need to create a dynamic array of some struct, but don't want defer
> contained elements initialization (for performance reasons).
>
> Tom;

There is std.array.reserve:

import std.array;

struct S {
     int i;
     int j;
}

int main(string[] args) {
     S[] ss;
     reserve(ss, 5);

     // or if you want to confuse yourself (and me):
     ss.reserve(5);  // same thing as above

     foreach (ref s; ss)
         s = S(1, 2);

     return 0;
}

Ali



More information about the Digitalmars-d-learn mailing list