배열 크기 결정을 위한 템플릿 기능
아래 템플릿 기능을 고려하세요.
template<typename T, size_t n> size_t array_size(const T (&)[n]) { return n; }
이 템플릿의 목적 인수로 전달된 배열의 크기를 결정하는 것입니다. 참조로 배열을 전달하면 단순히 포인터를 얻는 것이 아니라 크기가 보존됩니다.
설명
이를 이해하려면 다음을 고려하세요.
템플릿 함수에서 배열은 참조로 전달되어 크기가 캡처되도록 합니다. 템플릿은 크기(n)와 요소 유형(T)을 자동으로 추론합니다. 이를 통해 다음과 같이 활용할 수 있습니다:
size_t array_size(const int (&)[3]) { return 3; }
다음과 같이 사용할 수 있습니다:
size_t size_of_a = array_size(a);
고급 사용법
컴파일 시간 크기 결정을 허용하는 이 기술의 변형:
template<typename T, size_t n> char (& array_size(const T (&)[n]) )[n];
이 템플릿은 다음을 반환합니다. 크기가 n인 char 유형의 배열에 대한 참조입니다. 따라서 다음 코드는 컴파일 시간에 전달된 배열의 크기를 제공합니다.
size_t size_of_a = sizeof(array_size(a));
이 구성은 컴파일 시간에 결정되는 배열 크기를 활성화하고 다음과 같은 작업을 지원합니다.
int havingSameSize[sizeof(array_size(a))];
위 내용은 템플릿 함수가 컴파일 타임에 C 배열의 크기를 어떻게 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!