据说数组是在编译时分配的,然后大小必须是const
并且在编译时可用。
但以下示例也有效,为什么?
#include <iostream>
#include <vector>
using namespace::std;
int main()
{
vector<int> ivec;
int k;
while(cin>>k)
ivec.push_back(k);
int iarr[ivec.size()];
for (size_t k=0;k<ivec.size();k++)
{
iarr[k]=ivec[k];
cout<<iarr[k]<<endl;
}
return 0;
}
答案 0 :(得分:7)
使用-pedantic
编译代码。
大多数编制者通过 variable length arrays 支持 compiler extensions 。
代码由于编译器扩展而起作用,但是正如您所指出的那样,代码是非标准的,因此不可移植。