Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL array at() 함수 완벽 가이드: 사용법과 예외 처리

배열(array)은 동일한 데이터 타입의 요소들이 연속된 메모리 공간에 저장되어 있는 자료구조입니다.

C++ 표준 라이브러리(STL)에는 배열의 기능을 지원하기 위한 다양한 메서드들이 제공되며, 그중 하나가 바로 array at() 함수입니다.

array at() 함수는 특정 인덱스 위치에 있는 요소의 참조(reference)를 반환하는 데 사용됩니다. 일반적인 대괄호([]) 접근 방식과 달리, 유효하지 않은 인덱스에 대해 예외를 발생시켜 안전한 접근을 보장한다는 점이 큰 장점입니다.

문법(Syntax)

array at() 함수의 기본 문법은 다음과 같습니다.

array_name.at(i);

매개변수(Parameters)

at() 함수는 단일 매개변수를 받습니다. 이 매개변수는 함수를 통해 접근하고자 하는 요소의 인덱스(index) 값입니다.

반환값(Return Value)

함수는 호출 시 전달된 인덱스에 해당하는 요소를 반환합니다. 만약 유효 범위를 벗어난 잘못된 인덱스 값이 전달되면, 함수는 out_of_range 예외(exception)를 발생시킵니다.

예제 1: array::at() 함수의 기본 사용법

다음은 array::at() 함수가 정상적으로 동작하는 모습을 보여주는 프로그램입니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    array<float, 4> arr = { 12.1, 67.3, 45.0, 89.1 };
    cout << "인덱스 1의 요소는 " << arr.at(1) << endl;
    return 0;
}

출력 결과

인덱스 1의 요소는 67.3

위 예제에서 arr.at(1)은 배열의 두 번째 요소인 67.3을 반환합니다. 인덱스는 0부터 시작하므로 인덱스 1이 두 번째 요소에 해당한다는 점에 유의하세요.

예제 2: 배열 길이를 초과하는 인덱스 사용 시 오류

다음은 배열의 길이보다 큰 인덱스 값을 사용했을 때 발생하는 오류를 보여주는 프로그램입니다.

#include <bits/stdc++.h>
using namespace std;
int main(){
    array<float, 4> arr = { 12.1, 67.3, 45.0, 89.1 };
    cout << "인덱스 8의 요소는 " << arr.at(8) << endl;
    return 0;
}

출력 결과

terminate called after throwing an instance of 'std::out_of_range'
what(): array::at: __n (which is 8) >= _Nm (which is 4)
Aborted

배열의 크기는 4이지만 인덱스 8에 접근하려고 했기 때문에, 프로그램은 std::out_of_range 예외를 던지고 비정상 종료됩니다. 이처럼 at() 함수는 잘못된 접근을 조용히 넘어가지 않고 명확하게 오류를 알려주므로, 디버깅 시 매우 유용합니다.

정리

C++ STL의 at() 함수는 배열 요소에 안전하게 접근할 수 있는 방법을 제공합니다. 유효하지 않은 인덱스 접근 시 out_of_range 예외를 발생시켜 프로그램의 안정성을 높일 수 있으므로, 경계 검사가 필요한 상황에서는 대괄호([]) 연산자 대신 at() 함수를 사용하는 것이 좋습니다.