我最近更改了C ++编译器,并且遇到一个奇怪的错误,该错误说ISO C ++禁止使用可变长度数组。
我清楚地记得以前的编译器未遇到此错误。这是我编写的代码片段,目的是检查此新编译器的可靠性。
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
In function 'int main()':
test.cpp:8:9: error: ISO C++ forbids variable length array 'a' [-Wvla]
int a[n]={0};
您甚至可以看到即使用户使用“ n”作为输入,编译器也会指出该数组具有可变长度。
也欢迎提供有关其他编译器版本的建议!
最佳答案
用std::vector替换VLA:
#include <iostream>
#include <vector>
int main()
{
int n;
std::cin>>n;
std::vector<int> a(n); // was VLA: int a[n];
for(int i=0;i<n;i++)
std::cin>>a[i];
for(int i=0;i<n;i++)
std::cout<<a[i]<<" ";
}