On 7/5/2011 2:00 AM, Jonathan M Davis wrote:
On 2011-07-04 23:56, Jonathan M Davis wrote:
On 2011-07-04 23:42, Bellum wrote:
Can anyone point me in the right direction for doing something like this
in D:
char[][] anArray;
int rows, cols;
...
anArray = new char[rows][cols];
It isn't possible in this way because "rows cannot be read at compile
time", which seems to me to be the point of dynamic arrays. :P
auto anArray = new char[][](rows, cols);
Putting the numbers directly in the brackets tries to create a static array
once you get beyond the first dimension. So,
auto anArary = new char[4][5];
would create a dynamic array of length for with elements which are static
arrays of length 5. If you want it to by dynamic all the way, you need to
put the dimensions in the parens like above. Personally, I _never_ put
them in the brackets, even when the dynamic array has just one dimension.
It's just simpler to always put them in the parens and not worry about it.
Correction,
auto anArray = new char[4][5];
would create a dynamic array of length 5 of static arrays with length 4,
though
auto anArray = new char[][](4, 5);
does create a dynamic array of length 4 of dynamic arrays of length 5. It
quickly gets confusing when dealing with dimensions and static arrays IMHO.
- Jonathan M Davis
Wow, that is confusing. I think I'll stick to using parans, too; thanks
for the tip!