타입 추론(Type Inference)이란?
타입 추론은 프로그래밍 언어에서 표현식의 데이터 타입을 컴파일러가 자동으로 판별하는 기능을 의미합니다. 이 기능은 일부 강한 정적 타입(strongly statically typed) 언어에서 지원되며, 개발자가 매번 복잡한 타입 이름을 명시하지 않아도 되도록 도와줍니다.
C++에서는 C++11 표준부터 도입된 auto 키워드를 통해 자동 타입 추론을 사용할 수 있습니다. 특히 STL 컨테이너처럼 타입 이름이 길고 복잡한 경우에 auto를 활용하면 코드가 훨씬 간결하고 가독성이 높아집니다.
예를 들어, 벡터(vector)의 요소를 순회하는 반복자(iterator)를 생성할 때 std::vector<int>::iterator라는 긴 타입을 직접 작성하는 대신 auto를 사용하면 됩니다.
예제 코드
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> arr(10);
for(auto it = arr.begin(); it != arr.end(); it++) {
cin >> *it;
}
return 0;
}설명 및 결과
위 프로그램에서 반복자 변수 it은 std::vector<int>::iterator 타입으로 자동 추론됩니다. 컴파일러가 초기화 표현식인 arr.begin()의 반환 타입을 분석하여 적절한 타입을 결정하기 때문입니다.
auto 키워드의 주요 장점
- 코드 간결화: 길고 복잡한 타입 이름을 반복해서 작성할 필요가 없습니다.
- 유지보수성 향상: 컨테이너의 타입이 변경되더라도 변수 선언부를 수정할 필요가 없습니다.
- 안전성: 컴파일 시점에 타입이 결정되므로 런타임 오버헤드가 전혀 없습니다.
참고로, C++11에서는 decltype이라는 키워드도 함께 도입되어 표현식의 타입을 명시적으로 조회할 수 있으며, 이는 auto와 상호 보완적으로 활용됩니다.