通常の 2D 配列のように 2D std::array を初期化できないのはなぜですか?

Patricia Arquette
リリース: 2024-11-22 06:28:11
オリジナル
453 人が閲覧しました

Why Can't I Initialize a 2D std::array Like a Regular 2D Array?

2D std::array の初期化が制限される理由

std::array は非常に簡潔なコンテナですが、次のような点があります。 2D 配列を初期化するときの制限。次のような単純な初期化が機能しない理由を調べてみましょう:

std::array<std::array<int, 3>, 2> a {
    {1, 2, 3},
    {4, 5, 6}
};
ログイン後にコピー

エラー: 'std::array, 2u>'

このエラーを理解するための鍵は、std::array が本質的に C 配列を含むデータ構造であるということです。したがって、2D std::array を初期化するには、追加の中括弧が必要です:

std::array<std::array<int, 3>, 2> a {
    {{1, 2, 3}},   // 内层花括号用于初始化 C 数组
    {{4, 5, 6}}
};
ログイン後にコピー
この追加の中括弧のネストにより、コンパイラーは初期化データを C 配列メンバーに正しく割り当てることができます。したがって、std::array は C クラスですが、その初期化構文は C 配列の構文と似ています。

以上が通常の 2D 配列のように 2D std::array を初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート