如何在C ++中声明多维数组?

时间:2013-01-31 00:00:23

标签: c++

以下是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 ++中做同样的事情,但不知道如何阅读my C++ book

我该如何做到这一点?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 }
        },  
    };