实例化数组的方法之间的区别

时间:2014-01-04 07:16:15

标签: c++ arrays

假设在一个问题中我们必须声明一个n大小的数组,其中1 <= n <= 1000000000

有两种(可能更多)方法可以做到这一点:

  1. int arr[1000000001];并根据输入可以根据需要使用空格。
  2. 首先可以询问用户数组的大小,然后实例化数组:

    CIN&GT;将N; int arr [n];

  3. 我想知道这两种方法的优点和缺点。

1 个答案:

答案 0 :(得分:4)

两种方法的区别在于:

第一种方法符合标准,第二种方法符合非标准。 C ++标准不允许使用可变长度数组。编译器支持它们作为扩展,但严格意义上的使用不可移植。

第一种方法的风险在于,尽管不需要,但可能会耗尽堆栈空间或浪费内存。在这种情况下,最好的解决方案是使用std::vector