动态和静态数组:当两者都有可能时,通常使用其中一个的理由是什么?
其中一种情况可能是
int n;
cin >> n;
int a[n];
与
int n;
cin >> n;
int* a = new int[n];
答案 0 :(得分:1)
int a[n]
是一个可变长度数组,C ++标准不允许这样做,因此第二个代码片段应该是您的选择。
使用-pedantic
标志,你应该得到:
warning: ISO C++ forbids variable length array 'a' [-Wvla]
int a[n];
^
答案 1 :(得分:0)
正如其他答案所指出的,可变长度数组的语义无效。但是,c ++确实通过Vector类支持动态长度数组,因此您的问题仍然有意义,只是没有使用您使用的语法。我将解释这个问题,因为你应该使用向量或数组。答案是:
1)当您不需要动态大小或调整并速度至关重要时,请使用数组和您不关心数组索引是否超出范围
2)否则使用载体