我正在研究这个算法,第二个:动态编程解决方案
http://www.geeksforgeeks.org/dynamic-programming-set-24-optimal-binary-search-tree/
它创建了一个动态数组:int cost [n] [n];
这是如何工作的?我可以在GeeksForGeeks C ++模拟器上运行代码,但在Visual Studio本地我得到错误"表达式必须具有常量值"。
我在这里误解了什么?在编译之前,C ++不需要知道数组的大小吗?
答案 0 :(得分:4)
代码不是标准的。
type name[runtime_size]
是什么叫做可变长度数组。这在C ++中不是标准的,只能在具有g ++或clang等扩展名的编译器中编译。此扩展存在的原因是它在C99中有效。
完全正确的是,在编译时必须知道数组的大小。如果您需要一个数组,并且在运行时之前无法知道大小,建议您使用std::vector
或std::unique_ptr<type[]>
。