//将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明明是常量啊。。
int iarr[n]={};
编译器是有差异的,gcc可以支持,但是vc++不可以支持。
要么你用gcc(包括codeblock,devc++等基于它的开发工具)
要么按照vc++的写法,换成int *iarr = new int[n];
使用变量来定义数组长度时,这个数组可以定义,却不能同时进行初始化赋值,需要在之后赋值。
把大括号去了应该就不会报错了。
当然,编译器类型也会影响编译结果。
n是常量,可是被初始化于一个非常量(变量,也就是vector< int >::size()函数的返回值),那也是不行的。
n是常量,但不是常量表达式,只能在编译过程中获值,初始化数组维度的值必须是常量表达式