ホームページ  >  記事  >  バックエンド開発  >  中括弧を使用して C で 2D `std::array` を正しく初期化する方法

中括弧を使用して C で 2D `std::array` を正しく初期化する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-24 06:22:24949ブラウズ

How to Correctly Initialize a 2D `std::array` in C   Using Braces?

中括弧を使用した 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} } } };

この例では:

  • "{ { {1, 2, 3} }、{ { 4, 5, 6} } }" はクラス中括弧で、2D 配列の初期化を囲みます。
  • "{{1, 2, 3}, {4, 5, 6 }}" は内部の C スタイル配列の中括弧で、2D 配列の各行を初期化します。

以上が中括弧を使用して C で 2D `std::array` を正しく初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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