我有一个动态数组,为此我用类中的函数分配内存:
double *val;
int n; // dimension
void alloc (int nn) { // memory allocation for vector
n = nn;
val = new double[n];
}
但是当我尝试将数据放入main时我有以下问题:
当我输入:
a.val[3] = {1.0 , 1.0 , 1.0};
我收到以下非常模糊的错误:
syntax error : missing ';' before '{'
syntax error : '{'
但是当我输入时:
a.val[1]=1.0;
a.val[2]=1.0;
a.val[3]=1.0;
它运作得很好。任何人都知道为什么?
答案 0 :(得分:3)
您只能以这种方式初始化数组:
double a[3] = {1.0, 1.0, 1.0};
您的替代方案是:
void alloc (int nn) { // memory allocation for vector
n = nn;
val = new double[n];
// one option is:
for (int i = 0; i < n; i++)
{
val[i] = 1.0;
}
// or you can also do: (thanks to Benjamin)
std::fill_n(val, n, 1.0);
// or:
std::fill(val, val + n, 1.0);
}
答案 1 :(得分:1)
a.val[3] = {1.0 , 1.0 , 1.0};
这仅适用于初始化。
在您的情况下,您首先动态分配空间,在此期间进行初始化。
这将有效
float val[3]={1.0,1.0,1.0};
答案 2 :(得分:0)
您只能使用{data}进行初始化 但如果您仍想使用它来设置多个值,请尝试:
double values[3] = {1.0, 2.0, 3.0};
memcpy(&(a.val), &values, sizeof(values));