Dynamic array void initialization

Kai Meyer kai at unixlords.com
Tue Mar 8 16:44:26 PST 2011


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....


More information about the Digitalmars-d-learn mailing list