Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C 11 dan C 14 Boleh Digunakan untuk Mencipta Tatasusunan Malar Masa Kompilasi?

Bagaimanakah C 11 dan C 14 Boleh Digunakan untuk Mencipta Tatasusunan Malar Masa Kompilasi?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 03:50:131061semak imbas

How Can C  11 and C  14 Be Used to Create Compile-Time Constant Arrays?

Membuat Tatasusunan Constexpr dalam C 11: A Walkthrough

Dalam bidang pengaturcaraan C, kadangkala kita menghadapi situasi di mana kita perlu mentakrifkan tatasusunan dengan nilai malar semasa masa penyusunan. Ini amat berguna apabila berurusan dengan tatasusunan saiz yang diketahui yang tidak akan berubah semasa masa jalan. C 11 menawarkan ciri berkuasa yang dikenali sebagai constexpr yang membolehkan kami mencipta tatasusunan sedemikian.

Pertimbangkan senario berikut: anda ingin menentukan tatasusunan integer daripada 0 hingga nilai yang ditentukan, 'n'. Dalam C , kita biasanya boleh menyatakan ini sebagai:

int n = 5;
int array[] = {0 ... n};

Walau bagaimanapun, dalam C 11, kita boleh mencapai hasil yang sama menggunakan constexpr, memastikan bahawa nilai diketahui pada masa penyusunan.

Merangkul C 14 untuk Permulaan yang Cekap

C 14 memperkenalkan anjakan paradigma yang memperkemas proses mencipta tatasusunan constexpr. Menggunakan pembina constexpr dan gelung, kita boleh memulakan tatasusunan seperti ini dengan mudah:

#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';
}

Dalam coretan kod ini, pembina constexpr memulakan tatasusunan arr dengan nilai antara 0 hingga N-1 semasa penyusunan- masa. Teknik ini memastikan penciptaan tatasusunan constexpr yang cekap, memaksimumkan prestasi dan mengurangkan overhed masa jalan.

Atas ialah kandungan terperinci Bagaimanakah C 11 dan C 14 Boleh Digunakan untuk Mencipta Tatasusunan Malar Masa Kompilasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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