Dynamic array void initialization

Kai Meyer kai at unixlords.com
Tue Mar 8 16:42:54 PST 2011


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.


More information about the Digitalmars-d-learn mailing list