2017-08-26 75 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