2017-08-26 55 views

回答

1

这是因为可变长度数组在C非标准++( why?)。您可以使用new分配latinsquare,但在C++做一个地道的表达方式是使用向量的向量:

std::vector<std::vector<int>> latinsquare(n, std::vector<int>(n, 0)); 
+0

这是有见地的干杯!它按预期工作,但为什么在这段代码“latinsquare(n,std :: vector (n,0))'''中为'0'而不是'n'?此外,听起来可能有点傻,但我怎么会输出这两个阵列内的矢量?谢谢 – LiamJM

+0

@LiamJM Zero是分配给矢量的每个元素的值,作为其初始化的一部分。输出数组需要两个嵌套循环。 – dasblinkenlight

1

VLA不是标准的一部分。如果你想使用它们,你需要编译器扩展。

但是你可能

  • 经由newdelete运营

  • 动态创建它使用std::vector

+1

'的std :: array'是行不通的,因为它们需要在编译时固定大小。 – dasblinkenlight

相关问题