首頁 > 後端開發 > C++ > 如何在 C 11 中建立包含 N 個元素的 Constexpr 陣列?

如何在 C 11 中建立包含 N 個元素的 Constexpr 陣列?

DDD
發布: 2024-12-04 12:17:22
原創
325 人瀏覽過

How Can I Create a Constexpr Array of N Elements in C  11?

在C 11 中創建N 個元素的Constexpr 數組

在C 11 中,創建N 個元素的constexpr 數組並不像該語言的更高版本中那麼簡單。雖然 constexpr 數組是在 C 11 中引入的,但它們的功能是有限的,並且不可能使用與 C 14 及更高版本中相同的語法創建可變長度的 constexpr 數組。

但是,使用一些先進的技術和constexpr 函數,可以在 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';
}
登入後複製

在此範例中,我們定義constexpr 函數 A以 0 到 N-1 的值初始化長度為 N 的陣列。該函數被宣告為 constexpr 以確保其執行時間在編譯時已知。

在 main 函數中,我們建立 A 的實例;並列印陣列的值。由於數組是 constexpr,編譯器可以在編譯時確定其值,確保不會對數組執行運行時計算。

這種方法允許我們在 C 11 中建立 constexpr 數組,即使語法比該語言的更高版本更複雜。

以上是如何在 C 11 中建立包含 N 個元素的 Constexpr 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板