Dynamic array void initialization
Ali Çehreli
acehreli at yahoo.com
Tue Mar 8 13:53:08 PST 2011
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
More information about the Digitalmars-d-learn
mailing list