두 개의 구조체가 있습니다 : ARRAY2D (다차원) 및 ARRAY (1 차원). ARRAY2D 유형에서 열을 가져 와서 ARRAY 유형으로 복사하고 싶습니다.C의 다차원 배열에서 열을 가져 오는 효율적인 방법은 무엇입니까?
내 코드는 아래에서 작동하지만 배열에서 열을 가져 오는 것이 좋지 않을 수도 있지만 O (n2) 알고리즘을 피하기 위해 어떤 최적화가 필요한지 궁금합니다. C에서 배열의 열을 가져 오는 효율적인 방법은 무엇입니까?
BOOL arr2_getColumn(ARRAY2D *arr, const int column_index, ARRAY *returnedArray)
{
int x, y;
int i = 0;
/* Check for valid array. */
if (arr->blnIsInit != TRUE)
return FALSE;
/* Initialize array with the column's height. */
if (!arr_init(returnedArray, arr->height))
return FALSE;
/* Copy over column. */
for (y = 0; y < arr->height; y++)
{
for (x = 0; x <= column_index; x++)
{
if (x == column_index)
{
returnedArray->array[i] = arr->array[y * arr->width + x];
i++;
}
}
}
/* Set the new size. */
returnedArray->size = arr->height;
return TRUE;
}
중복 가능성 (http://stackoverflow.com/questions/15258084/how-to-get-column-of-a-multidimensional [C/C++?의 다차원 어레이의 열받는 방법]를 -Array-in-cc) –
아니, 아니 .... – Phil
또한 ARRAY2d와 ARRAY가 무엇인지 알 수 없습니다. – Gandaro