array cast from float[16] to float[4][4]

Spacen Jasset spacenjasset at yahoo.co.uk
Thu Jan 10 05:16:44 PST 2008


Christopher Wright wrote:
> Spacen Jasset wrote:
>> If I have:
>>
>> float[16]    a;
>>
>> can I cast it like this cast(float[4][4])a and pass it into a function 
>> expecting a float[4][4] or will this not work properly. It seems there 
>> is a problem doing so.
>>
>> This is for working with matricies so I should most probably write 
>> some sort of class to allow row and columns access
> 
> A float[4][4] is an array of four float[4]s.
> A float[4] is a (length, pointer) pair.
> 
> If multidimensional arrays are added (not just arrays of arrays), you'd 
> get the syntax float[4,4], most likely.
> 
> If you want to keep the same memory, you can do:
> float[16] flat;
> float[4][4] square = [flat[0..4], flat[4..8], flat[8..12], flat[12..$]];
> 
> This isn't very pretty, but it grows at sqrt(N) for an original array of 
> N elements, so it might be doable for your stuff.
I see yes. I will develop a class I think instead of trying to quickly 
do the aforementioned cast.

Thanks.


More information about the Digitalmars-d-learn mailing list