提问者:小点点

在循环中创建具有不同大小的二维数组


我有一个int的数组,它的值不同,称为sizes。我想创建一个二维数组(称为arr),其中第一个维度的大小是sizes数组的长度,第二个维度的大小是该索引处的整数值。我希望下面的代码能更容易理解我的问题。

    int sizes[4] = { 1, 2, 3, 4 };

    // What I need is an array with this shape
    {
        {0},                  // arr[0]
        { 0, 0 },             // arr[1]
        { 0, 0, 0 },          // arr[2]
        { 0, 0, 0, 0 }        // arr[3]
    };

我的实际代码,sizes数组更大,所以如果可能的话,我希望避免大量重复的代码行。

我是C++的新手,但我读过关于Constexpr的文章。我想我可以创建一个函数来返回这个数组,但是我还没有让它工作。

我还认为我可以循环sizes数组,并为每个int创建一个具有该大小的数组,但我不能将其分配给arr


共1个答案

匿名用户

C++不支持锯齿状二维数组。二维数组的大小需要为nxm,其中nm都大于零。

不使用二维数组,您可以使用二维向量来获得以下行为:

std::vector<std::vector<int>> table;
for (auto size : sizes)
    table.push_back(std::vector<int>(size));