编译错误:variable-sized object may not be initialized
//将int型vector拷贝给int数组
#include <iostream>
#include <vector>
#include <cstddef>
using namespace std;
int main()
{
    vector<int> ivec(5,2);
    const unsigned n=ivec.size();
    int iarr[n]={};
    size_t i=0;
    for(auto j:ivec)
    {
        iarr[i]=j;
        cout<<iarr[i]<<" ";
        i++;
    }
}

提示有语法错误,n明明是常量啊。。

c++

3个回答

int iarr[n]={};
编译器是有差异的,gcc可以支持,但是vc++不可以支持。
要么你用gcc(包括codeblock,devc++等基于它的开发工具)
要么按照vc++的写法,换成int *iarr = new int[n];

n是常量,可是被初始化于一个非常量(变量,也就是vector< int >::size()函数的返回值),那也是不行的。

n是常量,但不是常量表达式,只能在编译过程中获值,初始化数组维度的值必须是常量表达式

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!