C 11 での Constexpr 配列の生成
質問:
constexpr を作成するにはどうすればよいですか? C で指定されたサイズまでのゼロベースの配列11?
答え:
C 14 では、constexpr コンストラクターとループの導入により、このタスクは簡単になりました。ただし、C 11 では、より複雑なアプローチを採用する必要があります。
実装:
ステップ 1: クラスの使用Constexpr を使用したテンプレートConstructor
配列サイズ N をテンプレート パラメーターとして受け取るクラス テンプレート A を定義します。これには、サイズ N の配列 arr を初期化する constexpr コンストラクターが含まれています。
ステップ 2: 配列にデータを設定する
constexpr コンストラクター内で、最大 N まで反復し、arr の各要素に対応するインデックスを割り当てます。これにより、配列に 0 から n-1 のシーケンスを設定できます。
ステップ 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 サイトの他の関連記事を参照してください。