-4

以下は、C# での多次元配列宣言の例です。

var Number = new double[2, 3, 5]
    {
        {
             {  12.44, 525.38,  -6.28,  2448.32, 632.04 },
             {-378.05,  48.14, 634.18,   762.48,  83.02 },
             {  64.92,  -7.44,  86.74,  -534.60, 386.73 }
        },
        {
             {  48.02, 120.44,   38.62,  526.82, 1704.62 },
             {  56.85, 105.48,  363.31,  172.62,  128.48 },
             {  906.68, 47.12, -166.07, 4444.26,  408.62 }
        },
    };

C++ で同じことをしたいのですが、方法がわからず、C++ の本も読んでいません。

どうすればこれを達成できますか?

4

2 に答える 2

1

これは、境界を明示的に指定せずにそれを行うための素朴な方法です。

vector<vector<vector<double>>> v =
{
    {
        {  12.44, 525.38,  -6.28,  2448.32, 632.04 },
        {-378.05,  48.14, 634.18,   762.48,  83.02 },
        {  64.92,  -7.44,  86.74,  -534.60, 386.73 }
    },
    {
        {  48.02, 120.44,   38.62,  526.82, 1704.62 },
        {  56.85, 105.48,  363.31,  172.62,  128.48 },
        {  906.68, 47.12, -166.07, 4444.26,  408.62 }
    },
};

ただし、ベクトルのベクトルを使用すると、要素を各次元に自由にプッシュできるため(これらは単なる独立したベクトルです)、一貫した多次元ベクトルが得られない可能性があります。特に、コンパイラーは、ある次元に別の次元よりも多かれ少なかれ要素を配置しようとする試みを検出しません。

それが懸念される場合は、Boost.MultiArrayを確認することをお勧めします。

于 2013-01-31T00:03:06.790 に答える
0

固定サイズの多次元配列を定義および初期化するために、標準ライブラリまたは Boost は必要ありません。

double Number[2][3][5] =
    {   
        {   
             {  12.44, 525.38,  -6.28,  2448.32, 632.04 },
             {-378.05,  48.14, 634.18,   762.48,  83.02 },
             {  64.92,  -7.44,  86.74,  -534.60, 386.73 }
        },  
        {   
             {  48.02, 120.44,   38.62,  526.82, 1704.62 },
             {  56.85, 105.48,  363.31,  172.62,  128.48 },
             {  906.68, 47.12, -166.07, 4444.26,  408.62 }
        },  
    };
于 2013-01-31T02:03:10.160 に答える