假设在一个问题中我们必须声明一个n大小的数组,其中1 <= n <= 1000000000
有两种(可能更多)方法可以做到这一点:
int arr[1000000001];
并根据输入可以根据需要使用空格。首先可以询问用户数组的大小,然后实例化数组:
CIN&GT;将N; int arr [n];
我想知道这两种方法的优点和缺点。
答案 0 :(得分:4)
两种方法的区别在于:
第一种方法符合标准,第二种方法符合非标准。 C ++标准不允许使用可变长度数组。编译器支持它们作为扩展,但严格意义上的使用不可移植。
第一种方法的风险在于,尽管不需要,但可能会耗尽堆栈空间或浪费内存。在这种情况下,最好的解决方案是使用std::vector
。