>백엔드 개발 >C++ >C 11에서 Constexpr 0 기반 배열을 만드는 방법은 무엇입니까?

C 11에서 Constexpr 0 기반 배열을 만드는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-02 17:22:14843검색

How to Create a Constexpr Zero-Based Array in C  11?

C 11에서 Constexpr 배열 생성

질문:

constexpr을 어떻게 만들 수 있나요? C에서 지정된 크기까지 0부터 시작하는 배열 11?

답변:

C 14에서는 constexpr 생성자와 루프의 도입 덕분에 이 작업이 간단해졌습니다. 그러나 C 11에서는 좀 더 복잡한 접근 방식을 채택해야 합니다.

구현:

  1. 1단계: 클래스 활용 Constexpr 생성자가 있는 템플릿

    우리는 배열 크기 N을 템플릿 매개변수로 사용하는 클래스 템플릿 A. 여기에는 N 크기의 배열 arr을 초기화하는 constexpr 생성자가 포함되어 있습니다.

  2. 2단계: 배열 채우기

    constexpr 생성자 내에서 N까지 반복하여 arr의 각 요소에 해당 인덱스를 할당합니다. 이를 통해 배열을 0부터 n-1까지의 시퀀스로 채울 수 있습니다.

  3. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.