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

How do I declare a multi-dimensional array in C++?

本文关键字:数组 声明 C++      更新时间:2023-10-16

下面是 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++书。

我怎样才能做到这一点?

这是一种天真的方法,无需明确指定边界:

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

您不需要标准库或 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 }
        },  
    };