2017-04-08 54 views
0

目前,我正在做C++中的2d数组,它可以具有不同的第二列大小。这是我的代码:使用二维数组与不同大小的第二行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

使用x[y][z]而不是x[y, z]

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

  • a, b是一个逗号操作符,其评估两个操作数和返回第二个值。
  • *a相当于a[0]

这个答案一般仅适用于内建类型。您可以过载,,*[]运营商为一类,完全改变他们的行为。

如果你不知道什么运营商超载是,只是忽略这个说法。

+0

该死的,太多的C#:)谢谢你的答案 – dawcza94