什么时候使用动态数组而不是静态数组?

时间:2017-10-22 18:20:45

标签: c++ arrays memory-management dynamic

动态和静态数组:当两者都有可能时,通常使用其中一个的理由是什么?

其中一种情况可能是

int n;
cin >> n;
int a[n];

int n;
cin >> n;
int* a = new int[n];

2 个答案:

答案 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)否则使用载体