如何在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;