使用不同大小为第2行C ++的2d数组

时间:2017-04-08 13:05:59

标签: c++ arrays pointers

目前我想在c ++中做二维数组,这可能有不同的第二列大小。这是我的代码:

int **testZadanie;
testZadanie = new int*[testy];
...
for (int i = 0; i<testy; i++)
{
    cin >> liczbaLakomczuchow >> liczbaCiastek;
    testZadanie[i] = new int[liczbaLakomczuchow];
    for (int j = 0; j<liczbaLakomczuchow; j++)
    {
        cin >> czasJedzenia;
        //testZadanie[i, j] = czasJedzenia; this not works
        *testZadanie[i, j] = czasJedzenia;
    }
}

但是当我想为每列添加值时,我得到了异常。所以我不确定我是否可以做到这一点我真正想做的事情? (为每行声明动态列元素并为行中的每个项目附加?)

1 个答案:

答案 0 :(得分:1)

使用x[y][z]代替x[y, z]

编写*x[y, z]时,编译器会将其解释为x[z][0](这不是您想要的),因为:

  • a, b是一个逗号运算符,它会计算两个操作数并返回第二个值。
  • *a相当于a[0]

此答案通常仅适用于内置类型。您可以为一个类重载 ,*[]运算符,完全改变它们的行为。

如果您不知道运算符重载是什么,请忽略此注释。