컴파일 시간에 프로그래밍 방식으로 정적 배열 생성
C에서는 특정 값을 유지하기 위해 컴파일 시간에 정적 배열을 초기화할 수 있습니다. 다음 예를 고려하십시오.
const std::size_t size = 5; unsigned int list[size] = { 1, 2, 3, 4, 5 };
질문 1: 프로그래밍 방식으로 값 할당
컴파일 시 메타 프로그래밍 기술을 사용하여 이러한 값을 프로그래밍 방식으로 할당할 수 있습니까?
답변:
C 0x 기능을 사용하면 템플릿의 로컬 또는 멤버 배열을 만들고 가변 템플릿 인수 목록에서 초기화할 수 있습니다. 그러나 이는 최대 템플릿 인스턴스화 깊이에 의해 제한되며 대규모 배열에는 실용적이지 않을 수 있습니다.
질문 2: 선택적 할당
특정 배열 요소에 다른 값은 동일하지만 다른 값은 다를 경우 컴파일 타임에 프로그래밍 방식으로 선택 할당을 수행할 수 있습니까?
답변:
템플릿 메타 함수를 사용하면 값 배열을 생성하고 사용할 수 있습니다. 정적 배열을 부분적으로 초기화합니다. 다음 예에서는 인덱스를 기준으로 값을 선택적으로 할당합니다.
template<size_t index> struct MetaFunc { enum { value = index + 1 }; }; void test() { const std::size_t size = 7; typedef generate_array<size, MetaFunc>::result A; for (std::size_t i=0; i<size; ++i) { if (i <= 1 || i >= 4) { A::data[i] = 0; } } }
템플릿 메타 기능을 활용하면 컴파일 시간 평가를 보장하면서 프로그래밍 방식으로 선택적 할당을 달성할 수 있습니다.
위 내용은 C에서 컴파일 타임에 정적 배열을 프로그래밍 방식으로 초기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!