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

Reply via email to