ホームページ > バックエンド開発 > C++ > C 11 で N 要素の Constexpr 配列を作成するにはどうすればよいですか?

C 11 で N 要素の Constexpr 配列を作成するにはどうすればよいですか?

DDD
リリース: 2024-12-04 12:17:22
オリジナル
255 人が閲覧しました

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 を定義します。これは、長さ N の配列を 0 ~ N-1 の値で初期化します。この関数は、その実行時間がコンパイル時に分かるようにするために constexpr として宣言されています。

main 関数では、A のインスタンスを作成します。そして配列の値を出力します。配列は constexpr であるため、コンパイラはコンパイル時にその値を決定し、配列に対して実行時の計算が実行されないようにすることができます。

このアプローチにより、構文が異なっていても、C 11 で constexpr 配列を作成できます。言語の後のバージョンよりも複雑です。

以上がC 11 で N 要素の Constexpr 配列を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート