使用MSVC C ++编译器创建动态大小的数组

时间:2019-06-12 05:48:47

标签: c++ arrays visual-c++ dynamic

我正在使用Visual Studio 2013 Express和MSVC编译器。

执行以下代码行时出现错误。

#include<iostream>
using namespace std;
int main()
{
     int n;
     cin>>n;
     int a[n];
     return 0;
}

它说表达式在声明数组a的行上必须有一个常量值。 我搜索并找到了这个c++ array - expression must have a constant value

它表示您需要打开编译器选项才能允许它。 如何在Visual Studio Express中设置该选项?

2 个答案:

答案 0 :(得分:4)

您可以使用指针

import text from './data/text.txt';
console.log(text);  // This line will print out the content of the text file in the console

您必须先删除,然后才能退出int*a = new int [n]; 的范围:

a

但是最好使用向量:

delete[] a;

您还可以使用llvm smallvector,如果大小较小,则该llvm smallvector针对没有堆分配的小型阵列进行了优化

vector<int> a(n);

但是请记住,编译器将决定在哪里分配。 Smallvector

答案 1 :(得分:0)

尝试以下操作:

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int *a=new int[n];
    delete[] a;
    return 0;
}

将其分配到堆栈上的方式必须是常量,而必须在堆上分配,并且可以是任意值。

我认为没有编译器选项可以更改