2012-07-12 3 views
0

그래서 2D 배열이 있고 2D 배열의 'pth'행을 새로운 1D 배열에 할당하려고합니다 : 내 코드는 다음과 같습니다 :2 차원 배열의 한 행을 1 차원 행렬에 할당

float temp[] = { *aMatrix[p] }; // aMatrix is a 10x10 array 
           // am trying to assign the pth row 
           // to temp. 

*aMatrix[p] = *aMatrix[max]; 

*aMatrix[max] = *temp; 

float t = bMatrix[p]; 
bMatrix[p] = bMatrix[max]; 

상기 선언 한 후에, 온도는 A- 매트릭스의 PTH 행의 모든 ​​값과 길이 10이어야하지만, 단지 값을 포함한다. 그 문장의 모든 콤보를 시도했지만 아무것도 컴파일 컴파일 오류를 얻을. ..

내 질문은이 과제를하는 올바른 방법은 무엇입니까?

도움을 주시면 감사하겠습니다. 감사합니다.

+0

'* aMatrix [p]'는 하나의'float'을 제공합니다 - 당신은 두번 참조 해제됩니다. 즉,'temp'는 1 float 배열입니다. – jrok

답변

3

포인터를 약간 혼동하는 것처럼 보입니다. 간단한 할당을 사용하여 모든 구성원을 복사 할 수는 없습니다. C++은 배열의 구성원 단위 할당을 지원하지 않습니다. 당신은 너무 같은 요소를 반복해야합니다

float temp[10]; 

// copy the pth row elements into temp array. 
for(int i=0; i<10; i++) { 

    temp[i] = aMatrix[p][i]; 
} 

당신은 또한 당신의 A- 매트릭스를 가능하게 어떤 점에서 길이를 변경할 수 있다면이 두 번째 방법으로 수행 할 수 있습니다

int aLength = sizeof(aMatrix[p])/sizeof(float); 

float temp[aLength]; 

// copy the pth row elements into temp array. 
for(int i=0; i < aLength; i++) { 

    temp[i] = aMatrix[p][i]; 
} 
+0

고마워요. 전 똑같은 생각을하기 시작했는데 그 일을하는 데 더 많은 elegan 방법이 있었으면합니다. –

0

std::array를 사용할 수 있습니까? 그것은 C 스타일 배열과 달리 할당 가능합니다.

typedef std::array<float, 10> Row; 

std::array<Row, 10> aMatrix; 

Row temp = aMatrix[5]; 
+0

감사합니다. 이 과제의이 시점에서 모든 작업이 실행되면이를 구현하기 위해 몇 가지 중요한 변경을해야 할 것입니다. –

관련 문제