더북(TheBook)

2.2 | array<T,N> 컨테이너 사용하기

 

array<T,N> 템플릿은 표준 배열에 해당하는 컨테이너 타입을 정의한 것이다. 타입 T, 원소의 개수가 N개인 순차열이므로 원소의 타입과 개수를 지정하는 점을 제외하면 일반 배열과 같다. 원소를 추가하거나 삭제할 수 없다. 템플릿 인스턴스의 원소들은 내부에서 표준 배열로 저장된다. array 컨테이너는 표준 배열과 비교해도 오버헤드가 매우 적지만, 두 가지 장점이 있다. 하나는 at()을 사용해 원소에 접근하면 범위를 벗어난 인덱스에 접근하는지 탐지할 수 있다는 것이다. 다른 하나는 컨테이너에 몇 개의 원소가 있는지 알고 있으므로 함수에 원소의 개수를 별도로 지정하지 않아도 array 컨테이너를 인수로 전달할 수 있다는 것이다. array 컨테이너 타입을 사용하려면 반드시 array 헤더를 포함해야 한다. 사용하기는 매우 쉽다. 다음은 double 타입 원소 100개로 array<>를 생성한다.

std::array<double, 100> data;

원소의 초깃값을 지정하지 않고 array 컨테이너를 정의하면 원소들은 초기화되지 않는다. 이럴 때는 0이나 원소 타입의 기본값으로 초기화할 수 있다.

std::array<double, 100> data {};

이 문장은 data 컨테이너에 있는 모든 원소를 0.0으로 초기화한다. 매개변수 N의 지정은 상수 표현식이어야 하고, 컨테이너에서 원소의 개수는 변경할 수 없다. 물론, array 컨테이너의 인스턴스를 생성할 때 원소들을 일반 배열처럼 초기화하는 것도 가능하다.

std::array<double, 100> data {};
 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.