2009-11-03 5 views
0

나는 대신 C++로 matlab에 작성한 코드를 다시 작성하려고한다.C++ 배열 목록 또는 벡터?

저는 모든 용어가 2x2 매트릭스 인 256 개의 용어를 포함하는 matlab에 긴 셀을 가지고 있습니다. matlab에 나는 이것을 이렇게 썼다.

xA = cell(1,256); 
xA{1}=[0 0;3 1]; 
xA{2}=[0 0;13 1]; 
xA{3}=[0 0;3 2]; 

등 ...

무엇 C에서 사용하는 가장 쉬운 일이 될 것 ++?

[256] [2] [2] 한 번에 4 개의 값을 갖는 배열을 제공 할 수 있습니까, 아니면 배열의 모든 특정 값에 대해 한 줄을 써야합니까?

/Mr.Buxley

답변

5

이 지루한 타이핑의 많은처럼 들린다하지만 당신은 확실히, 한 번에 모두를 초기화 할 수는 :

float terms[256][4] = { 
{ 0, 0, 3, 1 }, 
{ 0, 0, 13, 1 }, 
{ 0, 0, 3, 2} 
... 
}; 

나는 256 4 요소의 배열을 아래로 단순화 배열. 당신이 정말로 물론 좋은 인 의도 중첩 표현하고 싶었다면, 당신은 할 필요가 : 수레의 두 개의 "목록"의 "목록"가 각각 256 선, 것

float terms[256][2][2] = { 
    { { 0, 0 }, { 3, 1 } }, 
    { { 0, 0 }, { 13, 1 } }, 
    { { 0, 0 }, { 3, 2 }} 
    ... 
    }; 

. 각 목록에는 중괄호가 필요합니다. 하지만, C++은 이런 일에 괄호를 억제을 지원하기 때문에, 당신은 할 수 :

float terms[256][2][2] = { 
    { 0, 0, 3, 1 }, 
    { 0, 0, 13, 1 }, 
    { 0, 0, 3, 2} 
    ... 
    }; 

는 사실, 당신도 각 줄에 괄호를 제거 할 수 있습니다, 그들도 선택 사항입니다. 그래도 약간 그늘진 서프 레션에 의존한다고 생각합니다.

float의 중첩 배열 (예 : Matrix<2,2> 유형)보다 높은 수준의 유형을 사용하려는 경우 초기화가 더 까다로워 질 수 있습니다.

+0

감사합니다. 그러나 후자의 예를 완전히 이해하지는 못했습니다. 인디언스는 어떻게 될까요? 이 경우 용어 13에 대해? [2] [3] 또는 [2] [1] –

+1

C 및 C++의 색인은 0부터 시작합니다. 용어 [1] [1] [0]입니다. – unwind

+0

오, 그래, 내 나쁜 ... 고마워 ... –