2012-01-13 4 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

Выделяют 1D массив целых чисел от размера РЯДОВ * столбцам; присвойте каждому элементу listOfTxtsContents [i] [j] элемент i * COLUMNS + j.

Смежные вопросы