2012-01-13 138 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; 
} 

這樣,每行都包含了一些數據,我想將它在陣列中以這樣的方式,這樣的一維數組將充滿連續行。

回答

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 2012-01-13 02:11:31

+0

@ruakh應該修復。 – Pubby 2012-01-13 02:15:05

+0

確實;謝謝。 +1 :-) – ruakh 2012-01-13 02:17:02

2

分配大小行×列的整數的一維數組;將每個listOfTxtsContents [i] [j]分配給元素i * COLUMNS + j。