문제

나는 두 가지 이상의 차원, 왜 필요한지, 그리고 어떻게 사용할 것인지, 배열의 개념에 머리를 감싸는 데 어려움을 겪고 있습니다.

예를 들어, 다중 정문 배열에서 다음 데이터를 어떻게 표현 하는가?

섹스 : 남성 | 여성
헤어 컬러 : 금발 | 갈색 머리 | 검은색
눈 색깔 : 파란색 | 브라운 | 녹색 | 엷은 갈색

본능은 내가 배열을 만들어야한다고 말하고 있습니다.

string[,,] personAttributes = new string[2,3,4]

루프 없이이 배열을 채우고 루프로 어떻게 채울 것인지 보여주십시오. 개념과 사용에 대한 모든 확장은 감사했습니다.

도움이 되었습니까?

해결책

3D는 물론 2D 배열이 좋은 생각이라고 생각하지 않기 때문에 당신의 Personattributes 예제를 만지지 않을 것입니다 (개인적으로는 스트러크 배열을 사용합니다).

그러나 다차원 배열은 일종의 직교 데이터 공간이있을 때 매우 유용합니다 (즉, 서로 독립적 인 몇 가지 "선택이 있습니다).

예를 들어, 각 테스트가 3 번 반복되고 12 개월 동안 한 달에 한 번 수행되는 10 명 이상의 테스트가 20 명의 응답 시간을 저장하는 경우 다음과 같은 배열이있을 수 있습니다.

double[,,,] responseTime = new double [12,20,10,3];

다른 팁

삼분기의 위험에 처하게되면 세 가지 이상의 데이터가있을 때 3 개 이상의 차원 배열을 사용합니다. 그래서 나는 당신이 3 차원의 데이터를 구상하는 데 어려움을 겪고 있다고 생각합니다.

어때 3D TIC TAC 발가락? 3 차원 데이터의 개별 표현은이 범주에 적합합니다.

헤어 컬러 등과 같은 속성에 관해서는, 나는 이것에 대해 다차원 배열을 사용하지 않을 것입니다. 그 속성이있는 물체와 열거 (예 : 열거로서)를 적절하게 사용하십시오. 그것은 ~ 일 것이다 많이 n 차원 배열보다 더 읽기 쉬운다.

나는 당신의 예에서 다차원 배열이 의미가 없다고 말하고 싶습니다. 수업은 귀하의 상황에서 훨씬 더 의미가 있습니다. 회원 변수로 저장된 열거와 같은 것은 당신이 갈 수있는 한 가지 방법입니다.

enum HAIRCOLORS { BROWN = 0, BLOND = 1 ..... };
enum SEX { FEMALE = 0, MALE = 1 };
enum EYECOLORS { GREEN, BLUE, RED .... };

class PersonAttributes 
{
    public SEX sex = SEX.Female;
    public HAIRCOLORS hairColor = HAIRCOLORS.Brown;
    public EYECOLORS eyeColor = EYECOLORS.Green;
};

등...

여러 차원이있는 데이터 구조를 모델링합니다. 체스 보드는 좋은 예입니다. 1 차원은 순위에, 다른 차원은 파일입니다.

예제의 데이터 범주 (성별, 눈 색깔, 헤어 컬러)는 다른 범주와 관련이 없기 때문에 각각 1 차원을 가진 3 개의 다른 배열로 가장 잘 표현되는 것으로 보입니다.

다차원 배열을 통해 루프를 원한다면 루프 내에서 루프를 사용합니다.

for (int i = 0; i < array.length; i++) {
   for (int j = 0; j < array[0].length; j++) {
      string data = array[i][j];
      // do something with the data
   }
}

배열을 주소로 생각하는 것이 도움이 될 수 있습니다.

123 Main St Springfield MA

이 예제를 사용하면 첫 번째 배열이 여러 상태입니다. 각 주에서는 도시가 거리를 잡고 마침내 거리가 개별 주소를 보유하는 것보다 도시 배열을 보유 할 것입니다.

이 배열을 사용하면 모든 주소로 메일 링리스트를 쉽게 만들 수 있습니다. 각 배열을 반복하면 모든 주소 또는 필요한 모든 것을 인쇄 할 수 있습니다.

당신의 예를 살펴보면, 나는 다차원 배열을 잘 맞지 않습니다. 배열로하고 싶은 주요한 일이 여성 / 금발 / 파란 눈 인 사람들과 같이 데이터의 하위 집합을 찾는 것이 아니라면. 나는 수업을 사용하기 위해 제안을 따를 것입니다. 배열에서 사람 객체를보고있을 때는 그 특성을 파악하기 위해 그 사람을 가리키는 색인 값을 알아야합니다.

유용 할 수있는 또 다른 예는 응용 프로그램에서 메시지의 국제화입니다. 배열은 언어, 상태 (오류, 경고, 정보), 메시지 ID (배열 메시지 문자열) 일 수 있습니다.

배열을 채우는 것은 데이터를 정렬하면 루프의 경우 몇 가지만 사용할 수 있습니다. 그렇지 않으면 입력 데이터를 구문 분석하여 적절한 지수를 식별하십시오.

다른 사람들이 쓴 것처럼, 당신의 예는 3D 어레이에 적합하지 않습니다. 예제는 2D 데이터 구조에 더 적합한 것 같습니다. 한 지수는 사람이고 다른 색인은 성별, 머리 색깔, 눈 색깔입니다. 또는 다른 데이터 구조를 사용할 수 있습니다 ...

3D 배열의 간단한 예 : (압축되지 않은) 흑백 디지털 영화 저장을 고려합니다. 각 프레임은 강도 값이있는 2D 이미지 X vs y입니다. 이미지 (i, j). 이제 영화를 가질 수있는 여러 프레임이 있으려면 영화를 이미지 (i, j, k)로 저장할 수 있으며, 여기서 k는 시간이 지남에 따라 변경됩니다. 영화가 색상 인 경우 CIMAGES (I, J, Q, K), Q = 1,2,3, 4D 배열이있는 세 가지 기본 색상을 저장하기 위해 4 차원을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top