구조체 배열
구조체 배열 (Structure Arrays)
구조체 배열은 구조체의 특별한 형태예요. 보통 구조체에서는 각 필드가 하나의 값을 갖지만, 구조체 배열에서는 그 대신 각 필드가 셀 배열(cell array)로 표현되고, 이 셀 배열들이 전부 같은 차원을 가져요. 개념적으로 보면 "필드 구성이 똑같은 구조체들을 배열로 나열한 것"이라고 봐도 돼요.
출처: 문서
본문
구조체 배열을 만드는 예시를 볼게요.
x(1).a = "string1";
x(2).a = "string2";
x(1).b = 1;
x(2).b = 2;
이 코드는 두 개의 필드(a, b)를 가진 1-by-2 구조체 배열을 만들어요. 구조체 배열을 만드는 다른 방법으로는 struct 함수를 쓰는 게 있어요(구조체 생성 항목 참고). 배열의 값을 출력하려면 이전처럼 그 이름을 입력하면 돼요.
x
⇒ x =
{
1x2 struct array containing the fields:
a
b
}
구조체 배열의 각 요소는 인덱싱으로 꺼낼 수 있고, 그 결과는 두 필드를 가진 구조체가 돼요.
x(1)
⇒ ans =
{
a = string1
b = 1
}
게다가 구조체 배열을 자신의 필드 이름으로 인덱싱하면, 필드 값들의 쉼표로 구분된 리스트(comma-separated list)를 돌려줘요(쉼표로 구분된 리스트 항목 참고). 예를 들면:
x.a
⇒
ans = string1
ans = string2
이 쉼표로 구분된 리스트를 대입문의 왼쪽에 쓸 수도 있어요.
[x.a] = deal ("new string1", "new string2");
x(1).a
⇒ ans = new string1
x(2).a
⇒ ans = new string2
숫자 배열과 마찬가지로 벡터를 인덱스로 쓸 수도 있어요(인덱스 표현식 항목 참고).
x(3:4) = x(1:2);
[x([1,3]).a] = deal ("other string1", "other string2");
x.a
⇒
ans = other string1
ans = new string2
ans = other string2
ans = new string2
size 함수는 구조체의 크기를 돌려줘요. 위 예제의 경우:
size (x)
⇒ ans =
1 4
구조체 배열의 요소는 숫자 배열과 비슷하게, 그 요소에 빈 행렬을 대입해서 삭제할 수 있어요. 예를 들어:
in = struct ("call1", {x, Inf, "last"},
"call2", {x, Inf, "first"})
⇒ in =
{
1x3 struct array containing the fields:
call1
call2
}
in(1) = [];
in.call1
⇒
ans = Inf
ans = last
더 알아보기
- 구조체를 만드는 다양한 방법은
struct함수와 구조체 생성 항목을 참고하세요. - 구조체 배열의 요소를 하나씩 다룰 때는 구조체 요소 루프 항목도 함께 보면 좋아요.