C 11에서 Constexpr 배열 생성
질문:
constexpr을 어떻게 만들 수 있나요? C에서 지정된 크기까지 0부터 시작하는 배열 11?
답변:
C 14에서는 constexpr 생성자와 루프의 도입 덕분에 이 작업이 간단해졌습니다. 그러나 C 11에서는 좀 더 복잡한 접근 방식을 채택해야 합니다.
구현:
1단계: 클래스 활용 Constexpr 생성자가 있는 템플릿
우리는 배열 크기 N을 템플릿 매개변수로 사용하는 클래스 템플릿 A. 여기에는 N 크기의 배열 arr을 초기화하는 constexpr 생성자가 포함되어 있습니다.
2단계: 배열 채우기
constexpr 생성자 내에서 N까지 반복하여 arr의 각 요소에 해당 인덱스를 할당합니다. 이를 통해 배열을 0부터 n-1까지의 시퀀스로 채울 수 있습니다.
3단계: 사용법
A 클래스를 인스턴스화할 수 있습니다. constexpr 배열의 인스턴스를 얻기 위한 템플릿입니다. arr 멤버에 액세스하여 해당 요소와 상호 작용할 수 있습니다.
다음은 C 11에서 이 접근 방식을 보여주는 예제 코드입니다.
#include <iostream> template<int N> struct A { constexpr A() : arr() { for (auto i = 0; i != N; ++i) arr[i] = i; } int arr[N]; }; int main() { constexpr auto a = A<4>(); for (auto x : a.arr) std::cout << x << '\n'; }
이 코드는 0~3 시퀀스가 예상되며 C 11에서 constexpr 0 기반 배열이 성공적으로 생성되었음을 보여줍니다.
위 내용은 C 11에서 Constexpr 0 기반 배열을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!