C ++には可変長のアレイがありますか?
-
21-12-2019 - |
質問
私は常にC ++では可変長配列が許可されていなかったと考えていました( 'なぜaren'このコードがコンパイルして作業するのはなぜC ++規格の範囲内のT可変長アレイの一部ですか?
#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int a[n];
for (int i=0; i<n; i++) {
a[i] = i;
}
for (int i=0; i<n; i++) {
cout << a[i] << endl;
}
}
. 解決
現在のC ++規格では、そのコンパイラVLASを必要としません。ただし、コンパイラベンダは拡張子としてVLASをサポートすることが許可されています。
もともとVLASがC ++ 14に現れることを提案したが、提案は成功しなかった。それらはC ++ 17のために戻るかもしれません。
他のヒント
C99はVLAを許可しますが、VLAのパフォーマンスはとても不親切なため、C ++はそれを許可しません。そしてC11では、VLAはオプションの機能になります。
前に、VLAがC ++ 17に現れると言われています。しかし今C ++ 17が公開されており、VLAはありません。(そしてC ++ 20はVLAはありません。最近の文書はまったく話していません。)
標準はそれをサポートしていませんが、GNUコンパイラは拡張子としてサポートしています。
所属していません StackOverflow