我想将值赋给结构中的向量/数组。像下面这样。但是,以下代码会产生错误,并且无法编译。
struct Params
{
float a = 1.132;
vector<float> v(100);
for (int n = 0; n < 100; ++n)
{
v[n] = n*a;
}
};
如何用我想填充的值填充v
,并将v
保存在结构中?谢谢。
答案 0 :(得分:2)
将代码放入这样的构造器中:
Params() {
v.resize(100);
for (int n = 0; n < 100; ++n)
{
v[n] = n * a;
}
}
这样,当您创建Params
时,它已经使用您的值进行了初始化:
Params a;
std::cout << a.v[10] << std::endl;
例如,这将打印11.32
。
答案 1 :(得分:1)
您可以将代码放在构造函数上(是一个好的解决方案)。 如果由于某种原因,您不想声明一个构造方法,则可以执行下一个解决方法:
struct Params {
float a = 1.132f;
std::vector<float> vec {
[this] {
std::vector<float> v(100);
for (int n = 0; n < 100; ++n)
{
v[n] = n*this->a;
}
return v;
}()
};
};
Lambda函数在“ Params”实例化上被调用。
在我的拙见中,最好还是使用一个构造函数来说明。