問題タブ [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.
c++ - C++14 で実行時サイズの配列と std::dynarray の両方を使用するのはなぜですか?
ドラフト C++14 には、実行時サイズの配列とstd::dynarray
コンテナーの両方が含まれています。私が知る限り、この 2 つの違いは、ランタイム サイズの配列にはありませんが、STL インターフェイス (たとえば、、、、など) があることだけstd::dynarray
ですbegin
。では、なぜ C++14 は両方を必要とするのでしょうか?end
size
実行時サイズの配列はコア言語のstd::dynarray
一部であり、標準ライブラリの一部であることは理解していますが、 の提案はstd::dynarray
、多くの場合、コンパイラがstd::dynarray
効率的になるように特別なサポートを提供することを著者が期待していることを明確にしています。つまり、実行時サイズの配列と同じくらい効率的です。そのため、言語とライブラリの区別はやや不自然に思えます。
繰り返しになりますが、なぜ C++14 は実行時サイズの配列と の両方を必要とするのstd::dynarray
でしょうか? よりリッチな (STL 化された) インターフェースを備えていることを考えると、同等のランタイム効率で実装できるとstd::dynarray
仮定して、なぜランタイム サイズの配列をドロップしないのでしょうか?std::dynarray
明確化
「ランタイム サイズの配列」について話すとき、N3639で説明されている新しい C++14 コア言語機能について言及していて、従来の C 配列や VLA、または C++11 の何かについて言及しているのではありません。