반응형
개요
C++에서 정적 배열을 사용하기 위해서 다음과 같이 작성할 수 있습니다.
int ary[5] = { 1, 2, 3, 4, 5 };
array<int, 5> ary { 1, 2, 3, 4, 5 };
C스타일의 정적 배열과 array는 매우 비슷하지만 약간의 편의 기능을 추가한 형태입니다.
특징
- 동적 할당
- 배열을 런타임에 선언 및 할당할 수 있습니다.
- 고정된 배열 크기
- 배열의 크기는 컴파일 타임에 고정되며, 런타임에 변동될 수 없습니다.
- 안정성 및 편의성 증가
- template를 사용하여 타입 안정성을 보장합니다.
- 배열의 크기를 자체적으로 참조할 수 있고, 표준 라이브러리 함수를 지원하여 begin 및 end iterator를 사용할 수 있습니다.
#include <array>
array를 사용하기 위해서 다음과 같이 <array> 헤더를 포함해야 합니다.
선언 및 초기화
array<_Ty, _Size> ary;
array는 타입을 선언할 때, 2개의 템플릿 매개변수를 받습니다. _Ty은 배열의 형식을 나타내고, _Size는 배열의 크기를 나타냅니다.
array<int, 5> ary = { 1, 2, 3, 4, 5 };
array<int, 5> ary { 1, 2, 3, 4, 5 }; // 배열을 { 1, 2, 3, 4, 5 }로 초기화
array를 선언과 동시에 초기화하기 위해서는 일반 배열을 초기화할 때와 같이 중괄호를 이용하여 초기화할 수 있습니다.
주요 함수
size()
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
size_t s = ary.size(); // 6을 반환합니다.
array의 크기를 반환합니다.
array에는 max_size()도 존재하지만 size()와 항상 같은 값을 반환하는데, 다른 표준 라이브러리의 컨테이너와 일관성을 유지하기 위해서 두 함수가 존재하고 두 함수 모두 사용할 수 있습니다.
at(index)
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int v1 = ary[3]; // 4를 반환합니다.
int v2 = ary.at(3); // 마찬가지로 4를 반환합니다.
array의 요소에 접근하여 값을 반환합니다.
범위 외의 인덱스에 접근하려고 하면 std::out_of_range 예외를 발생시킵니다.
front()
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int f = ary.front(); // 1을 반환합니다.
array에서 첫 번째 요소의 값을 반환합니다.
back()
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
int b = ary.back(); // 6을 반환합니다.
array에서 마지막 요소의 값을 반환합니다.
begin()
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
auto it = ary.begin();
array에서 첫 번째 요소의 iterator를 반환합니다.
end()
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
auto it = ary.end();
array에서 마지막 요소의 iterator를 반환합니다.
fill(value)
array<int, 6> ary = { 1, 2, 3, 4, 5, 6 };
ary.fill(0); // ary의 모든 요소를 0으로 채웁니다.
array의 모든 요소의 값을 특정 값으로 변경합니다.
반응형