如何在C++中初始化0的可变大小整数数组?

如何在C++中初始化0的可变大小整数数组?,c++,arrays,C++,Arrays,当数组大小为变量时,如何用零值初始化数组的所有值 int n; cin >> n; int a[n] = {0}; 我尝试了上面的代码,但是它给出了一个错误。< P>可变长度数组不是有效的C++,虽然有些编译器将它们作为扩展来实现。 < P>在C++中不允许的可变大小数组。可变大小表示程序运行时可以更改大小。。上面的代码试图让用户在运行时确定文件的大小 所以代码不会编译 两个备选方案: 1. Use Vectors Example: vector<int> a

当数组大小为变量时,如何用零值初始化数组的所有值

int n;
cin >> n;
int a[n] = {0};

我尝试了上面的代码,但是它给出了一个错误。

< P>可变长度数组不是有效的C++,虽然有些编译器将它们作为扩展来实现。

< P>在C++中不允许的可变大小数组。可变大小表示程序运行时可以更改大小。。上面的代码试图让用户在运行时确定文件的大小

所以代码不会编译

两个备选方案:

1. Use Vectors

Example:

   vector<int> a(n,0);

2. Create variable arrays using dynamic memory allocation.

    int*a;
    int n;
    cin >> n;
    a = new int[n];
    for(int i = 0; i<n;i++)
        *(a+i) = 0;
    delete [] a;

有关更多信息,请参阅。

如果n不是constexpr,则不会编译,但这是将数组元素初始化为零的方法。请共享错误,以便我们提供帮助。std::vector an;数组所需的内存在编译时确定,而n值仅在运行时可用。要解决这个问题,您必须使用std::vector,它可以自动动态地重新调整大小,或者使用手动内存管理为缓冲区分配足够的空间。但是最好的方法是使用std::vector。
// Input n
int n;
cin>>n;

// Declare a pointer 
int * a;
// Allocate memory block
a = new int[n];

/* Do stuff */

// Deallocate memory
delete[] a;