2016-09-29 181 views
0

我一直在尋找在這個算法中,第二個:動態規劃解C++動態數組。爲什麼這個工作?

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

它創建一個動態數組:整數成本[N] [N];

這是如何工作的?我可以在GeeksForGeeks C++模擬器上運行代碼,但在Visual Studio中本地出現錯誤「表達式必須有一個常量值」。

我在這裏誤解了什麼?編譯之前C++不需要知道數組的大小嗎?

+1

VLAs是非標準的C++,有些編譯器(如GCC)支持它們,但不應該依賴它,因爲它不是可移植的代碼。 – ArchbishopOfBanterbury

+0

該源程序將其稱爲C/C++實現,這已經讓我懷疑任何代碼的正確性。在C99中,VLA由標準的AFAIK支持。 – UnholySheep

+0

'sizeof'如何在這樣的數組上工作? – Slava

回答

4

該代碼不是標準的。

type name[runtime_size] 

是什麼叫做可變長度數組。這在C++中不是標準的,只會在編譯器中編譯,這些編譯器有像g ++或clang這樣的擴展名。這個擴展存在的原因是在C99中有效。

在編譯時必須知道數組的大小是完全正確的。如果你需要一個數組,並且在運行時間之前不知道大小,我建議你使用std::vectorstd::unique_ptr<type[]>

+0

另一種選擇是使用新的。 –

+0

@JacobMcCarthy,是的,但只有在'vector'和'array'已被調查並發現想要之後。他們並不經常被發現。 – user4581301

相關問題