더북(TheBook)

std::array는 C 스타일 배열과 똑같은 방식으로 배열 원소에 접근할 수 있는 [] 연산자를 제공합니다. [] 연산자에 접근하고자 하는 배열 원소 인덱스(index)를 지정할 경우, 빠른 동작을 위해 전달된 인덱스 값이 배열의 크기보다 작은지를 검사하지는 않습니다. 대신 std::arrayat(index) 형식의 함수도 함께 제공하며, 이 함수는 인자로 전달된 index 값이 유효하지 않으면 std::out_of_range 예외(exception)를 발생시킵니다. 그러므로 at() 함수가 [] 연산자보다 조금 느린 편이지만, at() 함수를 잘 이용하면 예외를 적절하게 처리할 수 있습니다. 배열 인덱스를 사용자 입력으로 받는다든가, 또는 다른 이유로 인해 유효하지 않은 인덱스에 접근할 수 있는 상황이라면 다음과 같은 예외 처리 코드를 만들 수 있습니다.

std::array<int, 4> arr3 = {1, 2, 3, 4};

try 
{
    std::cout << arr3.at(3) << std::endl;  // 에러 아님
    std::cout << arr3.at(4) << std::endl;  // std::out_of_range 예외 발생
}
catch (const std::out_of_range& ex) 
{
    std::cerr << ex.what() << std::endl;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.