2016-09-29 44 views
0

私はこのアルゴリズムを見ていた、第二1:動的計画ソリューションC++動的配列。なぜこれは機能しますか?

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

それはダイナミックアレイ作成:INTコスト[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::vectorまたはstd::unique_ptr<type[]>を使用することをお勧めします。

+0

新しいオプションを使用することもできます。 –

+0

@JacobMcCarthy、yesですが、 'vector'と' array'の後にのみ調査され、欲しいと判断されました。彼らは非常に頻繁に欲しいとは見当たりません。 – user4581301

関連する問題