Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencipta Tatasusunan Berasaskan Sifar Constexpr dalam C 11?

Bagaimana untuk Mencipta Tatasusunan Berasaskan Sifar Constexpr dalam C 11?

Linda Hamilton
Lepaskan: 2024-12-02 17:22:14
asal
992 orang telah melayarinya

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

Penjanaan Array Constexpr dalam C 11

Soalan:

Bagaimana kita boleh mencipta constexpr tatasusunan berasaskan sifar sehingga saiz yang ditentukan dalam C 11?

Jawapan:

Dalam C 14, tugasan ini menjadi mudah terima kasih kepada pengenalan pembina dan gelung constexpr. Walau bagaimanapun, dalam C 11, kita perlu menggunakan pendekatan yang lebih rumit.

Pelaksanaan:

  1. Langkah 1: Menggunakan Kelas Templat dengan Constexpr Constructor

    Kami mentakrifkan templat kelas A yang mengambil tatasusunan saiz N sebagai parameter templat. Ia termasuk pembina constexpr yang memulakan arr tatasusunan saiz N.

  2. Langkah 2: Mengisi Array

    Dalam pembina constexpr, kami lelaran sehingga N, memberikan setiap elemen arr indeks yang sepadan. Ini membolehkan kami mengisi tatasusunan dengan jujukan 0 hingga n-1.

  3. Langkah 3: Penggunaan

    Kita boleh membuat instantiate kelas A templat untuk mendapatkan contoh tatasusunan constexpr. Dengan mengakses ahli arrnya, kita boleh berinteraksi dengan elemennya.

Berikut ialah contoh kod yang menunjukkan pendekatan ini dalam 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';
}
Salin selepas log masuk

Kod ini akan mengeluarkan jangkaan 0 hingga 3 jujukan, menunjukkan kejayaan penciptaan tatasusunan berasaskan sifar constexpr dalam C 11.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Tatasusunan Berasaskan Sifar Constexpr dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan