본문 바로가기

C++/C++ 문법

[C++] std::array (array container)

728x90
반응형

배열을 선언하는 방법

 

C++에서 배열을 선언할 때 C 스타일 배열을 사용하는 방법과 C++ 표준 라이브러리의 std::array를 사용하는 방법이 있다.

 

C 스타일로 배열을 선언하는 방법은 아래 코드와 같다.

 

int arr[10];
int[] arr = new arr[10];

 

 

C++ 표준 라이브러리를 사용하여 배열을 선언하는 방법은 아래 코드와 같다.

 

#include <array>
std::array<int, 10> arr;

 

이때 std::array는 array 헤더파일에 정의되어 있기 때문에 #include <array>를 꼭 해줘야 한다.

 

초기화하는 방법은 C 스타일 배열과 동일하다.

 

 

 

 

 

 

다차원 배열 선언

 

std::array를 사용한 2차원 배열의 경우 아래 코드와 같이 선언이 가능하다.

 

array<array<int, 5>, 10> arr = {0};

 

 

 

 

 

 

 

 

 

array class method

 

array class에는 다양한 메서드들이 정의되어 있어서 이를 유용하게 사용할 수 있다.

 

반복자 반환 메서드

 

iterator begin() noexcept;
// 배열의 첫번째 원소를 가리키는 반복자 반환
iterator end() noexcept;
// 배열의 마지막 원소의 다음을 가리키는 반복자 반환
reverse_iterator rbegin() noexcept;
// 배열을 역으로 했을 때, 그 첫번째 원소를 가리키는 역방향 반복자 반환
reverse_iterator rend() noexcept;
// 배열을 역으로 했을 때, 그 마지막 원소의 다음을 가리키는 역방향 반복자 반환

 

 

array 반환 메서드

 

reference operator[](size_type n);
// 배열의 n번째 원소를 반환
reference operator at(size_type n);
// 배열의 n번째 원소를 반환
reference front();
// 배열의 첫번째 원소를 반환
reference back();
// 배열의 마지막 원소를 반호나
value_type* data() nocexcept;
// 배열을 포인터 타입으로 반환

 

이때 at()은 [] 연산자와 같은 기능을 수행하지만 boundary check를 하여 범위를 벗어나면 std::out_of_range 예외를 던진다.

또한 경계검사 작업을 실행하기 때문에 []보다 살짝 느릴 수 있다.

 

 

그 외 자주 사용하는 메서드

 

constexpr size_type size() noexcept;
// 배열의 크기를 반환
constexpr bool empty() noexcept;
// 배열이 비어있는지 여부를 반환
void fill(const value_type& val);
// 배열의 모든 원소를 val로 변경
void swap(array& arr) noexcept;
// 배열의 모든 원소를 배열 arr과 교환

 

 

 

 

 

 

 

728x90
반응형