수색…
소개
키워드 decltype
은 변수, 함수 또는 표현식의 유형을 가져 오는 데 사용할 수 있습니다.
기본 예제
이 예제는이 키워드를 사용하는 방법을 보여줍니다.
int a = 10;
// Assume that type of variable 'a' is not known here, or it may
// be changed by programmer (from int to long long, for example).
// Hence we declare another variable, 'b' of the same type using
// decltype keyword.
decltype(a) b; // 'decltype(a)' evaluates to 'int'
예를 들어 누군가 변경되면 'a'를 입력하여 다음을 수행하십시오.
float a=99.0f;
그러면 변수 b
의 유형이 이제 자동으로 float
됩니다.
다른 예시
벡터가 있다고 가정 해 봅시다.
std::vector<int> intVector;
그리고 우리는이 벡터에 대한 반복자를 선언하고자합니다. 분명한 아이디어는 auto
을 사용하는 것입니다. 그러나 iterator 변수를 선언하고 (아무 것도 지정하지 않고) 필요할 수도 있습니다. 우리는 다음과 같이 할 것입니다 :
vector<int>::iterator iter;
그러나 decltype
하면 ( intVector
유형이 변경되는 경우) 쉽게 오류가 발생하지 intVector
됩니다.
decltype(intVector)::iterator iter;
대안 :
decltype(intVector.begin()) iter;
두 번째 예제에서 begin
의 리턴 타입은 vector<int>::iterator
실제 타입을 결정하는 데 사용됩니다.
const_iterator가 필요한 경우에는 cbegin
을 사용해야 cbegin
.
decltype(intVector.cbegin()) iter; // vector<int>::const_iterator
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow