問題タブ [dynarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
10045 参照

c++ - C++14 で実行時サイズの配列と std::dynarray の両方を使用するのはなぜですか?

ドラフト C++14 には、実行時サイズの配列とstd::dynarrayコンテナーの両方が含まれています。私が知る限り、この 2 つの違いは、ランタイム サイズの配列にはありませんが、STL インターフェイス (たとえば、、、、など) があることだけstd::dynarrayですbegin。では、なぜ C++14 は両方を必要とするのでしょうか?endsize

実行時サイズの配列はコア言語のstd::dynarray一部であり、標準ライブラリの一部であることは理解していますが、 の提案はstd::dynarray、多くの場合、コンパイラがstd::dynarray効率的になるように特別なサポートを提供することを著者が期待していることを明確にしています。つまり、実行時サイズの配列と同じくらい効率的です。そのため、言語とライブラリの区別はやや不自然に思えます。

繰り返しになりますが、なぜ C++14 は実行時サイズの配列と の両方を必要とするのstd::dynarrayでしょうか? よりリッチな (STL 化された) インターフェースを備えていることを考えると、同等のランタイム効率で実装できるとstd::dynarray仮定して、なぜランタイム サイズの配列をドロップしないのでしょうか?std::dynarray

明確化

「ランタイム サイズの配列」について話すとき、N3639で説明されている新しい C++14 コア言語機能について言及していて、従来の C 配列や VLA、または C++11 の何かについて言及しているのではありません。