2012-01-13 8 views
0

私は二重intポインタから一次元配列を取得したいと思います。ポインタのためのメモリは、このように割り当てられている:int **から一次元のint配列を素早く取得するには?

listOfTxtsContents = new int *[ROWS]; 
for(int i = 0 ; i < ROWS ; i++) 
{ 
    listOfTxtsContents[i] = new int[COLUMNS]; 
    for(int j = 0; j < COLUMNS; ++j) 
     listOfTxtsContents[i][j] = 0; 
} 

そして各行は、私は、1Dアレイは連続した行で充填されるような方法で配列に入れたい、いくつかのデータを含みます。

このような何かが動作するはずかなり確信して

答えて

2

array[ROWS * COLUMNS]; 
for(size_t i = 0; i < ROWS; ++i) 
    memcpy(array + i * COLUMNS, listOfTxtsContents[i], COLUMNS * sizeof(int)); 
+0

そのアイデアは間違っているわけではありませんが、詳細の一部はオフです。例えば、 'ROWS'があるところでは' COLUMNS'が必要です。逆も同様です。 – ruakh

+0

@ruakh修正する必要があります。確かに; – Pubby

+0

;ありがとう。 +1 :-) – ruakh

2

は、サイズROWS * COLUMNSのint型の1次元配列を割り当てます。各listOfTxtsContents [i] [j]を要素i * COLUMNS + jに割り当てます。

関連する問題