2D std::array の初期化
その見た目に反して、C の 2D std::array は同じ方法では初期化されません2D C 配列として。この根本的な理由は、std::array は配列ではなくクラスであるためです。
2D std::array を初期化するには、クラス中括弧とメンバー配列中括弧の両方を使用する必要があります:
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
外側の中括弧 {} はクラス自体を初期化し、内側の中括弧 {{}} はクラス内に含まれるメンバー C 配列を初期化します。 class.
C の配列初期化との比較
違いを明確にするために、以下に C の配列の初期化との比較を示します。
struct B { int array[3]; }; struct A { B array[2]; }; B b = {{1,2,3}}; A a = {{ {{1,2,3}}, {{4,5,6}} }};
C では、外側の中かっこ {} は構造体自体を初期化し、内側の中かっこ {{}} は構造体内のメンバー配列を初期化します。この構文は、 C の 2D std::array の初期化に似ていますが、後者の場合、 std::array クラスはクラス自体を初期化するために追加の外側中括弧を必要とする点が異なります。
以上がC で 2D `std::array` を初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。