我在看这个算法,第二个:动态规划解法
http://www.geeksforgeeks.org/dynamic-programming-set-24-optimal-binary-search-tree/
它创建一个动态数组:int cost[n][n];
这是如何运作的?我可以在 GeeksForGeeks C++ 模拟器上运行代码,但在 Visual Studio 本地我收到错误“表达式必须具有常量值”。
我在这里误解了什么? C++在编译前不需要知道数组的大小吗?
最佳答案
代码不规范。
type name[runtime_size]
就是所谓的变长数组。这在 C++ 中不是标准的,只能在具有 g++ 或 clang 等扩展的编译器中编译。此扩展存在的原因是它在 C99 中有效。
您完全正确,数组的大小必须在编译时已知。如果您需要一个数组,并且直到运行时才知道大小,我建议您使用 std::vector
或 std::unique_ptr<type[]>
.
关于C++ 动态数组。为什么这个有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779129/