convert int[][] to int**

Chris Williams yoreanon-chrisw at yahoo.co.jp
Fri Feb 21 11:16:46 PST 2014


On Friday, 21 February 2014 at 19:13:13 UTC, Chris Williams wrote:
> On Thursday, 20 February 2014 at 17:02:15 UTC, Dicebot wrote:
>> You can't do it without allocation because memory layout is 
>> different for int** and int[][] in D - are.ptr in latter 
>> points to slice struct (pointer+length) as opposed to raw 
>> pointer in former.
>
> You should only have to copy the top list, though.
>
> int*[] temp = new int*[ arr.length ];
> for (size_t i = 0; i < arr.length; i++) {
>     temp[i] = arr[i].ptr;
> }
> int** output = temp.ptr;
>
> Untested.

Addendum: Note that bearophile's code probably works out to the 
same thing.


More information about the Digitalmars-d-learn mailing list