C ++动态数组。为什么这个有效?

时间:2016-09-29 20:09:38

标签: c++ arrays dynamic

我正在研究这个算法,第二个:动态编程解决方案

http://www.geeksforgeeks.org/dynamic-programming-set-24-optimal-binary-search-tree/

它创建了一个动态数组:int cost [n] [n];

这是如何工作的?我可以在GeeksForGeeks C ++模拟器上运行代码,但在Visual Studio本地我得到错误"表达式必须具有常量值"。

我在这里误解了什么?在编译之前,C ++不需要知道数组的大小吗?

1 个答案:

答案 0 :(得分:4)

代码不是标准的。

type name[runtime_size]

是什么叫做可变长度数组。这在C ++中不是标准的,只能在具有g ++或clang等扩展名的编译器中编译。此扩展存在的原因是它在C99中有效。

完全正确的是,在编译时必须知道数组的大小。如果您需要一个数组,并且在运行时之前无法知道大小,建议您使用std::vectorstd::unique_ptr<type[]>