On 03/08/2011 05:42 PM, Kai Meyer wrote:
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.

Sorry,
foreach(i; 0..5)

That's what I get for writing code with out trying to run it....

Reply via email to