수색…


소개

키워드 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