二维数组 - 表达式必须具有常量值错误

时间:2017-08-26 23:24:38

标签: c++ dynamic-arrays

我尝试Latin Square Daily Challenge on Reddit并且我想使用一个在运行时通过使用以下代码分配大小的数组:

<!DOCTYPE html>
<html>

<head>
  <style>
    input {
      display: block
    }
  </style>
</head>

<body>

  <form id='inform' action='http://httpbin.org/post' method='post'>
    <input id='indate' name='indate' required>
    <input id='intype' name='intype' required>
    <input id='inamount' name='inamount' required>

    <input type="submit">


  </form>


</body>

</html>

这适用于在线编译器,但不适用于Visual Studio 17.有没有办法在Microsoft C ++编译器中执行此操作?

2 个答案:

答案 0 :(得分:1)

VLA不属于标准的一部分。如果要使用它们,则需要编译器扩展。

但你可以

  • 通过newdelete运营商动态创建

  • 使用std::vector

答案 1 :(得分:1)

这是因为可变长度数组在C ++中是非标准的(why?)。您可以使用latinsquare分配new,但在C ++中使用它的惯用方法是使用向量向量:

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