中括弧を使用した 2D std::array の初期化
C を使用する場合、中括弧を使用して 2D std::array を初期化するのは難しい場合があります。 。次のコード スニペットはこの問題を示しています。
std::array<std::array<int, 3>, 2> a { {1, 2, 3}, {4, 5, 6} };
このアプローチはコンパイルに失敗し、std::array<:array>, 2u> の初期化子が多すぎることを示すコンパイラ エラーが発生します。この問題が発生する理由を理解するには、std::array の基礎となる実装を知ることが重要です。
std::array Internals
std::array は、 C スタイルの配列を包含します。したがって、正しく初期化するには、クラス自体には外側の中かっこが必要で、C 配列メンバーには内側の中かっこが必要です。
std::array<int, 3> a1 = { { 1, 2, 3 } };
このロジックを 2D 配列に拡張すると、次の有効な初期化が行われます。
std::array<std::array<int, 3>, 2> a2 { { { {1, 2, 3} }, { { 4, 5, 6} } } };
この例では:
以上が中括弧を使用して C で 2D `std::array` を正しく初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。