-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 回答