2014-10-24 3 views
1

I 배열을 가지고 각각 몇 헤더를 생성하고 이들은 모두 중첩 :중첩 배열 또는 중첩 2D 배열?

PixelArray [17] 내부 ScreenArray [10] monitorArray에 [동적 포인터]

이것은 내부 I 때문에

: 나는 (긴 슛을하지 유능한 프로그래머)를 따라 갔다으로 테스트하고 싶었 만이 후에 내가 하나의 2 차원 배열로 PixelArray [17]와 ScreenArray [10] 합병 수도 실현했다 PixelArray [10] [17] MonitorArray [Dynam] 내부 ic 포인터]

제 질문은 단일 2D 배열을 사용하는 것이 더 효율적인지 여부입니다. 2 차원 배열을 관리

+0

효율성은 문자 그대로 당신이 걱정해야 할 마지막 사항입니다. 귀하의 경우에는 성능면에서 차이가 없을 것입니다 만, 확실한 대답은 측정을 통해서만 얻을 수 있습니다. –

답변

1

1D 배열을 관리하는 것보다 더 competance이 필요하지만, 당신은 더 나은 형태로 포장을 가지고있는 2 차원 배열은 당신이 때문에 데이터 그룹이 함께

+0

우아함이 무엇인가를 목표로한다고 생각합니다. 그러나 그 방법들 사이에 눈에 띄는 차이가 있는지에 관해서는 제가 궁금해했습니다. –

+1

@BuiltonSin 그들은 액세스 할 변수가 적기 때문에 컴파일러의 관점에서 볼 때, 데이터 저장 용량은 동일하지만, 2D에서는 거의 효율적이지 않습니다 –

1

하나의 2 차원 배열 또는 배열을 포함하는 배열 유지, 더 우아 C++에서 매우 동일합니다. 실제로

typedef int InnerArray[20]; 
InnerArray OuterArray[30]; 

int MyArray2d[20][30]; 

는 C++ 컴파일러 같은 말을하는 방법은 두 가지가 기본적으로 있습니다.

1

효율성면에서 특정 데이터 레이아웃이 얼마나 좋은지에 대한 질문은 데이터 액세스 방법을 고려한 경우에만 대답 할 수 있습니다.

일반적으로 메모리에 데이터를 연속적으로 또는 최소한 로컬로 액세스 할 수 있도록 데이터를 그룹화해야한다고 말하면 데이터 스트리밍이나 캐시 효율성과 같은 하드웨어 지원의 이점을 누릴 수 있습니다. 이를 종종 "데이터 지향 디자인"이라고합니다.

두 개의 메모리 레이아웃이 사실상 동일하기 때문에 두 제안에서 예상되는 차이는 거의 없습니다.