El 08/03/2011 21:42, Kai Meyer escribió:
On 03/08/2011 02: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;

Any reason you don't just do this:

S[] ss;
ss.reserve(5)
foreach(i; 0..i)
ss ~= S(1, 2);

I think that would not do default initialization on any of the elements,
and it would ensure that the dynamic array is own "grown" once.

Nope, you're right. That'll work for me.

Thank you,
Tom;

Reply via email to