ホームページ >バックエンド開発 >C++ >C 11 で Constexpr ゼロベース配列を作成するには?

C 11 で Constexpr ゼロベース配列を作成するには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 17:22:14841ブラウズ

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

C 11 での Constexpr 配列の生成

質問:

constexpr を作成するにはどうすればよいですか? C で指定されたサイズまでのゼロベースの配列11?

答え:

C 14 では、constexpr コンストラクターとループの導入により、このタスクは簡単になりました。ただし、C 11 では、より複雑なアプローチを採用する必要があります。

実装:

  1. ステップ 1: クラスの使用Constexpr を使用したテンプレートConstructor

    配列サイズ 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 ゼロベース配列を作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。